List of usage examples for com.jgoodies.forms.layout CellConstraints xy
public CellConstraints xy(int col, int row)
Examples:
cc.xy(1, 1); cc.xy(1, 3);
From source file:ca.sqlpower.swingui.enterprise.client.ServerProjectsManagerPanel.java
License:Open Source License
/** * This constructor creates a dialog for modifying and loading a project * from a single server designated by the given serverInfo parameter. * /*from w w w. j a v a 2s . c o m*/ * @param serverInfo * Projects will be retrieved from this server based on the * information and displayed. The dialog will allow editing the * security as well as creating and deleting projects on this * server. * @param dialogOwner * The dialog to parent new dialogs to. * @param upf * A user prompter factory for displaying error and warning * messages to users. * @param closeAction * An action that will close the dialog or frame that this dialog * is contained in. * @param defaultFileDirectory * A default file directory to start looking for files in if the * user wants to upload a project. If null this will default to * the user's home directory. * @param cookieStore * A cookie store for HTTP requests. Used by the * {@link ClientSideSessionUtils}. */ public ServerProjectsManagerPanel(SPServerInfo serverInfo, Component dialogOwner, UserPrompterFactory upf, Action closeAction, File defaultFileDirectory, CookieStore cookieStore) { this.serverInfo = serverInfo; this.dialogOwner = dialogOwner; this.upf = upf; this.closeAction = closeAction; this.defaultFileDirectory = defaultFileDirectory; this.cookieStore = cookieStore; cookieStore.clear(); DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref")); servers = null; projects = new JList(new DefaultListModel()); projects.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { refreshPanel(); if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) { getOpenAction().actionPerformed(null); } } }); JScrollPane projectsPane = new JScrollPane(projects); projectsPane.setPreferredSize(new Dimension(250, 300)); CellConstraints cc = new CellConstraints(); builder.add(new JLabel(serverInfo.getName() + "'s projects:"), cc.xyw(1, 1, 2)); builder.nextLine(); builder.add(projectsPane, cc.xywh(1, 2, 1, 2)); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(new JButton(refreshAction)); buttonBarBuilder.append(securityButton); buttonBarBuilder.append(new JButton(newAction)); buttonBarBuilder.append(openButton); buttonBarBuilder.append(new JButton(deleteAction)); buttonBarBuilder.append(new JButton(closeAction)); builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); }
From source file:ca.sqlpower.swingui.enterprise.client.ServerProjectsManagerPanel.java
License:Open Source License
/** * Creates a dialog that lets the user choose a server connection and then a * project./* w w w. j av a2 s . c o m*/ * * @param serverManager * This object contains all of the server information objects * known and the servers based on their information will be * displayed in a list so a user can navigate to different * projects in different servers. * @param dialogOwner * The dialog to parent new dialogs to. * @param upf * A user prompter factory for displaying error and warning * messages to users. * @param closeAction * An action that will close the dialog or frame that this dialog * is contained in. * @param defaultFileDirectory * A default file directory to start looking for files in if the * user wants to upload a project. If null this will default to * the user's home directory. * @param cookieStore * A cookie store for HTTP requests. Used by the * {@link ClientSideSessionUtils}. */ public ServerProjectsManagerPanel(SPServerInfoManager serverManager, Component dialogOwner, UserPrompterFactory upf, Action closeAction, File defaultFileDirectory, CookieStore cookieStore) { this.dialogOwner = dialogOwner; this.upf = upf; this.closeAction = closeAction; this.defaultFileDirectory = defaultFileDirectory; this.cookieStore = cookieStore; cookieStore.clear(); DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, 5dlu, pref:grow, 5dlu, pref", "pref, pref, pref")); servers = new JList(new DefaultListModel()); servers.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e)) { refreshInfoList(); } } }); DefaultListModel serversModel = (DefaultListModel) servers.getModel(); serversModel.removeAllElements(); if (serverManager.getServers(false).size() > 0) { for (SPServerInfo serverInfo : serverManager.getServers(false)) { serversModel.addElement(serverInfo); } } else { serversModel.addElement("No Servers"); servers.setEnabled(false); } projects = new JList(new DefaultListModel()); projects.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { refreshPanel(); if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) { getOpenAction().actionPerformed(null); } } }); JScrollPane projectsPane = new JScrollPane(projects); projectsPane.setPreferredSize(new Dimension(250, 300)); JScrollPane serverPane = new JScrollPane(servers); serverPane.setPreferredSize(new Dimension(250, 300)); CellConstraints cc = new CellConstraints(); builder.add(new JLabel("Servers:"), cc.xyw(1, 1, 2)); builder.add(new JLabel("Projects:"), cc.xyw(3, 1, 2)); builder.nextLine(); builder.add(serverPane, cc.xywh(1, 2, 1, 2)); builder.add(projectsPane, cc.xywh(3, 2, 1, 2)); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(new JButton(refreshAction)); buttonBarBuilder.append(securityButton); buttonBarBuilder.append(new JButton(newAction)); buttonBarBuilder.append(openButton); buttonBarBuilder.append(new JButton(uploadAction)); buttonBarBuilder.append(new JButton(deleteAction)); buttonBarBuilder.append(new JButton(closeAction)); builder.add(buttonBarBuilder.getPanel(), cc.xy(5, 2)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); }
From source file:ca.sqlpower.swingui.enterprise.client.SPServerInfoManagerPanel.java
License:Open Source License
/** * Creates a panel that displays the currently configured server * connections. New connections can be added from this panel and existing * connections can be modified or removed. * /* w ww . ja v a 2s.c o m*/ * @param manager * An {@link SPServerInfoManager} instance that contains server connection information. * @param dialogOwner * A component that will be used as the dialog owner for other * panels. * @param closeAction * An action that will properly close the object displaying the * panel. * @param boxLabel * Label of the server information box * @param addOrEditDialogLable * Label of the Add/Edit panel */ public SPServerInfoManagerPanel(SPServerInfoManager manager, Component dialogOwner, Action closeAction, String boxLabel, String addOrEditDialogLable) { this.manager = manager; this.dialogOwner = dialogOwner; this.boxLable = boxLabel; this.addOrEditDialogLabel = addOrEditDialogLable; DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref")); serverInfos = new JList(new DefaultListModel()); serverInfos.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e) && connectButton.getAction() != null) { connectButton.getAction().actionPerformed(null); } } }); JScrollPane scrollPane = new JScrollPane(serverInfos); scrollPane.setPreferredSize(new Dimension(400, 300)); this.connectButton = new JButton(); // Build the GUI refreshInfoList(); CellConstraints cc = new CellConstraints(); builder.add(new JLabel(boxLable), cc.xyw(1, 1, 3)); builder.nextLine(); builder.add(scrollPane, cc.xywh(1, 2, 1, 2)); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(new JButton(addAction)); buttonBarBuilder.append(new JButton(editAction)); buttonBarBuilder.append(new JButton(removeAction)); buttonBarBuilder.append(connectButton); buttonBarBuilder.append(new JButton(closeAction)); builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); }
From source file:ca.sqlpower.wabit.swingui.enterprise.ServerInfoManager.java
License:Open Source License
/** * Creates a panel that displays the currently configured server * connections. New connections can be added from this panel and existing * connections can be modified or removed. * /* w w w .ja v a 2 s .c o m*/ * @param m_context * A Wabit context that contains server connection information. * @param m_dialogOwner * A component that will be used as the dialog owner for other * panels. * @param closeAction * An action that will properly close the object displaying the * panel. */ public ServerInfoManager(WabitSessionContext m_context, Component m_dialogOwner, final Runnable closeAction) { this.context = m_context; this.dialogOwner = m_dialogOwner; DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref")); serverInfos = new JList(new DefaultListModel()); serverInfos.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) { editSelectedServer(); } } }); JScrollPane scrollPane = new JScrollPane(serverInfos); scrollPane.setPreferredSize(new Dimension(400, 300)); this.connectButton = new JButton("Connect"); this.connectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SPServerInfo selectedItem = (SPServerInfo) serverInfos.getSelectedValue(); Window dialogParent; if (dialogOwner instanceof Window) { dialogParent = (Window) dialogOwner; } else { dialogParent = SwingUtilities.getWindowAncestor(dialogOwner); } if (selectedItem != null) { LogInToServerAction action = new LogInToServerAction(dialogParent, selectedItem, context); action.actionPerformed(e); } } }); // Build the GUI refreshInfoList(); CellConstraints cc = new CellConstraints(); builder.add(new JLabel("Available Server Connections:"), cc.xyw(1, 1, 3)); builder.nextLine(); builder.add(scrollPane, cc.xywh(1, 2, 1, 2)); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(new JButton(addAction)); buttonBarBuilder.append(new JButton(editAction)); buttonBarBuilder.append(new JButton(removeAction)); buttonBarBuilder.append(connectButton); buttonBarBuilder.append(new JButton(new AbstractAction("Close") { public void actionPerformed(ActionEvent arg0) { closeAction.run(); } })); builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); }
From source file:ca.sqlpower.wabit.swingui.olap.Olap4jTableHeaderComponent.java
License:Open Source License
public Olap4jTableHeaderComponent(CellSet cellSet) { CellSetAxis rowAxis = cellSet.getAxes().get(1); int positionCount = rowAxis.getPositionCount(); CellSetAxisMetaData axisMetaData = rowAxis.getAxisMetaData(); List<HierarchyLabelGrid> labelGrids = new ArrayList<HierarchyLabelGrid>( axisMetaData.getHierarchies().size()); for (int i = 0; i < axisMetaData.getHierarchies().size(); i++) { labelGrids.add(new HierarchyLabelGrid(i, positionCount)); }/*from w ww .java2s . co m*/ for (Position p : rowAxis.getPositions()) { List<Member> members = p.getMembers(); int memberOrdinal = 0; for (Member member : members) { HierarchyLabelGrid lg = labelGrids.get(memberOrdinal); Member ancestor = member; do { lg.addLabelAtPosition(p.getOrdinal(), ancestor.getName()); ancestor = ancestor.getParentMember(); } while (ancestor != null); lg.finalizePosition(p.getOrdinal()); memberOrdinal++; } } int columns = 0; for (HierarchyLabelGrid lg : labelGrids) { columns += lg.getWidth(); } setLayout(new GridLayout(positionCount, columns)); CellConstraints cc = new CellConstraints(); String previousValue[] = new String[columns]; for (int position = 0; position < positionCount; position++) { int column = 0; for (HierarchyLabelGrid lg : labelGrids) { for (String positionText : lg.getLabelsForPosition(position)) { String labelText = null; if (!SQLPowerUtils.areEqual(positionText, previousValue[column])) { labelText = positionText; } JLabel label = new JLabel(labelText); label.setBackground(ColourScheme.HEADER_COLOURS[lg.getOrdinal()]); label.setOpaque(true); add(label, cc.xy(column + 1, position + 1)); previousValue[column] = positionText; column++; } } } }
From source file:calendarexportplugin.CalendarSettingsTab.java
License:Open Source License
public JPanel createSettingsPanel() { final EnhancedPanelBuilder pb = new EnhancedPanelBuilder( FormFactory.RELATED_GAP_COLSPEC.encode() + "," + FormFactory.PREF_COLSPEC.encode() + "," + FormFactory.RELATED_GAP_COLSPEC.encode() + ",default:grow," + FormFactory.RELATED_GAP_COLSPEC.encode() + "," + FormFactory.PREF_COLSPEC.encode()); CellConstraints cc = new CellConstraints(); mCategorie = new JTextField(mSettings.getCategory()); String[] reservedValues = { mLocalizer.msg("Busy", "Busy"), mLocalizer.msg("Free", "Free") }; mShowTime = new JComboBox(reservedValues); if (mSettings.isShowBusy()) { mShowTime.setSelectedIndex(0);/*from w w w. j av a 2 s . co m*/ } else if (mSettings.isShowFree()) { mShowTime.setSelectedIndex(1); } String[] classificationValues = { mLocalizer.msg("Public", "Public"), mLocalizer.msg("Private", "Private"), mLocalizer.msg("Confidential", "Confidential") }; mClassification = new JComboBox(classificationValues); if (mSettings.isClassificationPublic()) { mClassification.setSelectedIndex(0); } else if (mSettings.isClassificationPrivate()) { mClassification.setSelectedIndex(1); } else if (mSettings.isClassificationConfidential()) { mClassification.setSelectedIndex(2); } mNulltime = new JCheckBox(mLocalizer.msg("nullTime", "Set length to 0 Minutes")); if (mSettings.getNullTime()) { mNulltime.setSelected(true); } pb.addRow(); pb.addLabel(mLocalizer.msg("Categorie", "Categorie") + ':', cc.xy(2, pb.getRow())); pb.add(mCategorie, cc.xyw(4, pb.getRow(), pb.getColumnCount() - 3)); pb.addRow(); pb.addLabel(mLocalizer.msg("ShowTime", "Show Time as") + ':', cc.xy(2, pb.getRow())); pb.add(mShowTime, cc.xyw(4, pb.getRow(), pb.getColumnCount() - 3)); pb.addRow(); pb.addLabel(mLocalizer.msg("Classification", "Classification") + ':', cc.xy(2, pb.getRow())); pb.add(mClassification, cc.xyw(4, pb.getRow(), pb.getColumnCount() - 3)); mUseAlarm = new JCheckBox(mLocalizer.msg("reminder", "Use reminder")); pb.addRow(); pb.add(mUseAlarm, cc.xy(2, pb.getRow())); SpinnerModel model = new SpinnerNumberModel(0, 0, 1440, 1); mAlarmMinutes = new JSpinner(model); JPanel panel = new JPanel(new BorderLayout()); panel.add(mAlarmMinutes, BorderLayout.WEST); final JLabel label = new JLabel(mLocalizer.msg("minutesBefore", "Minutes before start.")); label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); panel.add(label, BorderLayout.CENTER); mUseAlarm.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { mAlarmMinutes.setEnabled(mUseAlarm.isSelected()); label.setEnabled(mUseAlarm.isSelected()); } }); if (mSettings.getUseAlarm()) { mUseAlarm.setSelected(true); } try { mAlarmMinutes.setValue(mSettings.getAlarmMinutes()); } catch (Exception e) { // empty } mAlarmMinutes.setEnabled(mUseAlarm.isSelected()); label.setEnabled(mUseAlarm.isSelected()); pb.add(panel, cc.xyw(4, pb.getRow(), 2)); pb.addRow(); pb.add(mNulltime, cc.xyw(2, pb.getRow(), 4)); mMarkItems = new JCheckBox(mLocalizer.msg("markItems", "Mark items when exported")); if (mSettings.getMarkItems()) { mMarkItems.setSelected(true); } pb.addRow(); pb.add(mMarkItems, cc.xyw(2, pb.getRow(), 4)); pb.addParagraph(mLocalizer.msg("interface", "Interface")); mExporterList = new SelectableItemList(mPlugin.getExporterFactory().getActiveExporters(), mPlugin.getExporterFactory().getAllExporters()); pb.addRow("120"); pb.add(mExporterList, cc.xyw(2, pb.getRow(), 3)); final JButton settings = new JButton(Localizer.getLocalization(Localizer.I18N_SETTINGS)); settings.setEnabled(false); mExporterList.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { Object[] ob = mExporterList.getListSelection(); if ((ob.length == 1) && (((ExporterIf) ob[0]).hasSettingsDialog())) { settings.setEnabled(true); } else { settings.setEnabled(false); } } }); settings.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Object[] ob = mExporterList.getListSelection(); if (ob.length == 1) { ((ExporterIf) ob[0]).showSettingsDialog(mSettings); } } }); pb.add(settings, cc.xy(6, pb.getRow(), CellConstraints.RIGHT, CellConstraints.TOP)); pb.addParagraph(mLocalizer.msg("formattings", "Formattings")); JButton extended = new JButton(mLocalizer.msg("formattings", "Formattings")); extended.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showExtendedDialog(pb.getPanel()); } }); pb.addRow(); pb.add(extended, cc.xy(2, pb.getRow())); return pb.getPanel(); }
From source file:calendarexportplugin.exporter.AppleSettingsDialog.java
License:Open Source License
private void createGui(final CalendarExportSettings settings) { setTitle(mLocalizer.msg("title", "iCal Calendar Settings")); UiUtilities.registerForClosing(this); JPanel content = (JPanel) getContentPane(); content.setBorder(Borders.DLU4_BORDER); CellConstraints cc = new CellConstraints(); content.setLayout(new FormLayout("5dlu, 15dlu, fill:pref:grow, 3dlu, 100dlu", "pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, fill:3dlu:grow ,pref, 3dlu,pref")); content.add(new JLabel(mLocalizer.msg("select", "Select Calendar")), cc.xyw(2, 3, 2)); mCalendarChooser = new JTextField(); content.add(mCalendarChooser, cc.xy(5, 3)); ButtonBarBuilder2 builder = new ButtonBarBuilder2(); builder.addGlue();//from ww w .j a v a2s. co m mOkButton = new JButton(Localizer.getLocalization(Localizer.I18N_OK)); mOkButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { okPressed(settings); } }); getRootPane().setDefaultButton(mOkButton); JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL)); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { close(); } }); builder.addButton(new JButton[] { mOkButton, cancel }); content.add(builder.getPanel(), cc.xyw(1, 19, 5)); loadValues(settings); setSize(Sizes.dialogUnitXAsPixel(200, this), Sizes.dialogUnitYAsPixel(100, this)); }
From source file:calendarexportplugin.ExtendedDialog.java
License:Open Source License
/** * Create the GUI/*from w w w.j a v a2s.com*/ */ private void createGui() { try { CellConstraints cc = new CellConstraints(); PanelBuilder pb = new PanelBuilder( new FormLayout("5dlu,default:grow,5dlu", "pref,5dlu,fill:default:grow,5dlu,pref"), (JPanel) this.getContentPane()); pb.setDefaultDialogBorder(); mConfigPanel = new PluginProgramConfigurationPanel( CalendarExportPlugin.getInstance().getSelectedPluginProgramFormattings(), CalendarExportPlugin.getInstance().getAvailableLocalPluginProgramFormatings(), CalendarExportPlugin.getDefaultFormatting(), true, false); pb.addSeparator(mLocalizer.msg("title", "Formatings selection"), cc.xyw(1, 1, 3)); pb.add(mConfigPanel, cc.xy(2, 3)); FormLayout layout = new FormLayout("0dlu:grow,pref,5dlu,pref", "pref"); layout.setColumnGroups(new int[][] { { 2, 4 } }); JPanel buttonPanel = new JPanel(layout); JButton ok = new JButton(Localizer.getLocalization(Localizer.I18N_OK)); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { okPressed(); } }); JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL)); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cancelPressed(); } }); buttonPanel.add(ok, cc.xy(2, 1)); buttonPanel.add(cancel, cc.xy(4, 1)); pb.add(buttonPanel, cc.xy(2, 5)); getRootPane().setDefaultButton(ok); setSize(550, 400); } catch (Exception e) { e.printStackTrace(); } }
From source file:captureplugin.drivers.defaultdriver.configpanels.ApplicationPanel.java
License:Open Source License
/** * creates a JPanel for getting the programpath */// w w w . j a va 2s .c o m private void createPanel() { CellConstraints cc = new CellConstraints(); PanelBuilder pb = new PanelBuilder( new FormLayout("5dlu,pref,3dlu,pref:grow,3dlu,pref,2dlu", "pref,5dlu,pref,3dlu,pref"), this); pb.setDefaultDialogBorder(); pb.addSeparator(mLocalizer.msg("What", "What to start"), cc.xyw(1, 1, 7)); JRadioButton application = new JRadioButton(mLocalizer.msg("Application", "Application")); pb.add(application, cc.xy(2, 3)); mPathTextField.setText(mData.getProgramPath()); mPathTextField.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent e) { mData.setProgramPath(mPathTextField.getText()); } }); pb.add(mPathTextField, cc.xy(4, 3)); mFileButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pathButtonPressed(e); } }); pb.add(mFileButton, cc.xy(6, 3)); JRadioButton url = new JRadioButton(mLocalizer.msg("URL", "URL")); pb.add(url, cc.xy(2, 5)); mUrl.setText(mData.getWebUrl()); mUrl.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent e) { mData.setWebUrl(mUrl.getText()); } }); pb.add(mUrl, cc.xyw(4, 5, 3)); ButtonGroup group = new ButtonGroup(); group.add(application); group.add(url); url.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setUrlMode(true); } }); application.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setUrlMode(false); } }); if (mData.getUseWebUrl()) { url.setSelected(true); } else { application.setSelected(true); } setUrlMode(mData.getUseWebUrl()); }
From source file:captureplugin.drivers.defaultdriver.configpanels.ChannelPanel.java
License:Open Source License
/** * creates a JPanel for managing the channels *//*from ww w . j a v a 2s . c o m*/ private void createPanel() { CellConstraints cc = new CellConstraints(); PanelBuilder pb = new PanelBuilder(new FormLayout("5dlu,pref:grow,5dlu", "pref,5dlu,fill:default:grow"), this); pb.setDefaultDialogBorder(); ChannelTableModel tableModel = new ChannelTableModel(mData); mChannelTable.setModel(tableModel); mChannelTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); mChannelTable.getTableHeader().setReorderingAllowed(false); mChannelTable.getColumnModel().getColumn(0).setCellRenderer(new ChannelTableCellRenderer()); mChannelTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JPanel background = new JPanel(new FormLayout("default:grow", "fill:default:grow")); JLabel label = new JLabel(value.toString()); label.setOpaque(false); if (isSelected) { background.setBackground(table.getSelectionBackground()); label.setForeground(table.getSelectionForeground()); } else { background.setBackground(table.getBackground()); } background.add(label, new CellConstraints().xy(1, 1)); return background; } }); JScrollPane sp = new JScrollPane(mChannelTable); addAncestorListener(new AncestorListener() { public void ancestorAdded(AncestorEvent event) { } public void ancestorMoved(AncestorEvent event) { } public void ancestorRemoved(AncestorEvent event) { if (mChannelTable.isEditing()) { TableCellEditor editor = mChannelTable.getCellEditor(); if (editor != null) { editor.stopCellEditing(); } } } }); pb.addSeparator(mLocalizer.msg("ChannelNames", "Channel Names"), cc.xyw(1, 1, 3)); pb.add(sp, cc.xy(2, 3)); }