List of usage examples for javax.swing JTable setRowHeight
@BeanProperty(description = "The height of the specified row.") public void setRowHeight(int rowHeight)
rowHeight
, revalidates, and repaints. From source file:Visuals.RingChart.java
public JPanel addAVCharts() { JPanel thisPanel = new JPanel(); thisPanel.setLayout(new BorderLayout()); int tempCriticalCount = 0, tempUpdatedCount = 0; String[][] criticalList = new String[critical][4]; String[][] updatedList = new String[low][4]; for (int i = 0; i < riskCount; i++) { if (risks[i][2].equals("Critical")) { criticalList[tempCriticalCount][0] = risks[i][0]; criticalList[tempCriticalCount][1] = risks[i][1]; criticalList[tempCriticalCount][3] = risks[i][3]; tempCriticalCount++;/*from ww w . j av a 2s . c o m*/ } if (risks[i][2].equals("Low")) { updatedList[tempUpdatedCount][0] = risks[i][0]; updatedList[tempUpdatedCount][1] = risks[i][1]; tempUpdatedCount++; } } JTable criticalTable = new JTable(criticalList, criticalColumns); JTable updatedTable = new JTable(updatedList, updatedColumns); TableColumn tcol = criticalTable.getColumnModel().getColumn(2); criticalTable.removeColumn(tcol); TableColumn tcol2 = updatedTable.getColumnModel().getColumn(2); updatedTable.removeColumn(tcol2); criticalTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updatedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); criticalTable.setEnabled(false); updatedTable.setEnabled(false); int width = 0; for (int i = 0; i < 3; i++) { for (int row = 0; row < criticalTable.getRowCount(); row++) { TableCellRenderer renderer = criticalTable.getCellRenderer(row, i); Component comp = criticalTable.prepareRenderer(renderer, row, i); width = Math.max(comp.getPreferredSize().width, width); } criticalTable.getColumnModel().getColumn(i).setPreferredWidth(width); width = 0; } for (int i = 0; i < 2; i++) { for (int row = 0; row < updatedTable.getRowCount(); row++) { TableCellRenderer renderer = updatedTable.getCellRenderer(row, i); Component comp = updatedTable.prepareRenderer(renderer, row, i); width = Math.max(comp.getPreferredSize().width, width); } updatedTable.getColumnModel().getColumn(i).setPreferredWidth(width); width = 0; } criticalTable.setShowHorizontalLines(true); criticalTable.setRowHeight(40); updatedTable.setShowHorizontalLines(true); updatedTable.setRowHeight(40); JScrollPane criticalTableScrollPane = new JScrollPane(criticalTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); JScrollPane updatedTableScrollPane = new JScrollPane(updatedTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); Dimension d = criticalTable.getPreferredSize(); criticalTableScrollPane.setPreferredSize( new Dimension((d.width - 400), (criticalTable.getRowHeight() + 1) * (tempCriticalCount + 1))); Dimension d2 = updatedTable.getPreferredSize(); updatedTableScrollPane.setPreferredSize( new Dimension((d.width - 400), (updatedTable.getRowHeight() + 1) * (tempUpdatedCount + 1))); Font titleFonts = new Font("Calibri", Font.BOLD, 30); JLabel criticalLabel = new JLabel(" Critical "); criticalLabel.setFont(titleFonts); criticalLabel.setForeground(new Color(230, 27, 27)); JPanel leftPanel = new JPanel(); leftPanel.setLayout(new BorderLayout()); leftPanel.add(criticalLabel, BorderLayout.WEST); leftPanel.add(criticalTableScrollPane, BorderLayout.CENTER); JLabel updatedLabel = new JLabel(" Updated "); updatedLabel.setFont(titleFonts); updatedLabel.setForeground(new Color(47, 196, 6)); JPanel rightPanel = new JPanel(); rightPanel.setLayout(new BorderLayout()); rightPanel.add(updatedLabel, BorderLayout.WEST); rightPanel.add(updatedTableScrollPane, BorderLayout.CENTER); if (tempCriticalCount != 0) thisPanel.add(leftPanel, BorderLayout.NORTH); if (tempUpdatedCount != 0) thisPanel.add(rightPanel, BorderLayout.SOUTH); return thisPanel; }
From source file:semaforo.Semaforo.java
public synchronized void loadTableWeek(JTable TableWeek, int index) { Settings settings = Controller.getSettings(); //TableWeek.getColumnModel().getColumn(0).setPreferredWidth(350); //150 TableWeek.setRowHeight(20); //40 //TableWeek.getColumnModel().getColumn(9).setPreferredWidth(350);//150 TableWeek.setFont(new Font("Arial", Font.BOLD, 12));//18 CustomRenderer cr = new CustomRenderer(TableWeek.getDefaultRenderer(Object.class), Color.LIGHT_GRAY, Color.LIGHT_GRAY, Color.LIGHT_GRAY, Color.LIGHT_GRAY); TableWeek.setDefaultRenderer(Object.class, cr); DefaultTableModel model = (DefaultTableModel) TableWeek.getModel(); Object[] o = new Object[10]; JTableHeader header = TableWeek.getTableHeader(); header.setPreferredSize(new Dimension(10, 30)); //100 TableWeek.getTableHeader().setFont(new Font("Arial", Font.BOLD, 15)); /* DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); centerRenderer.setHorizontalAlignment(SwingConstants.CENTER); TableWeek.getColumnModel().getColumn(0).setCellRenderer(centerRenderer); TableWeek.getColumnModel().getColumn(9).setCellRenderer(centerRenderer); TableWeek.setDefaultRenderer(String.class, centerRenderer);*/ int num = settings.getTickers().size(); /* while(DDBB.loadData) { try {// w ww. j a v a 2 s . com Thread.sleep(500); } catch (InterruptedException ex) { Logger.getLogger(Semaforo.class.getName()).log(Level.SEVERE, null, ex); } }*/ if (TableWeek.getModel().getRowCount() > 0) { num = Math.min(settings.getTickers().size(), TableWeek.getModel().getRowCount()); } for (int i = 0; i < num; i++) { o[0] = settings.getTickers().get(i).getMinValue(index); o[9] = settings.getTickers().get(i).getMaxValue(index); model.addRow(o); } }
From source file:es.emergya.ui.plugins.AdminPanel.java
/** * /* www.ja va 2 s . c o m*/ * @param columnNames * nombres de las columnas de la tabla * @param filterOptions * lista de opciones de un combobox. Si esta vacio entonces es un * textfield * @param noFiltrarAction * @param filtrarAction */ public void generateTable(String[] columnNames, Object[][] filterOptions, AdminPanel.NoFiltrarAction noFiltrarAction, AdminPanel.FiltrarAction filtrarAction) { if (columnNames == null) { columnNames = new String[] {}; } if (filterOptions == null) { filterOptions = new Object[][] {}; } String filterString = "["; for (Object[] o : filterOptions) { filterString += Arrays.toString(o) + " "; } filterString += "]"; log.debug("generateTable( columnNames = " + Arrays.toString(columnNames) + ", filterOptions = " + filterString + ")"); tablePanel.removeAll(); int columnNamesLength = columnNames.length; if (!getCanDelete()) columnNamesLength++; MyTableModel dataModel = new MyTableModel(1, columnNamesLength + 2) { private static final long serialVersionUID = 1348355328684460769L; @Override public boolean isCellEditable(int row, int column) { return column != 0 && !invisibleFilterCols.contains(column); } }; filters = new JTable(dataModel) { private static final long serialVersionUID = -8266991359840905405L; @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); if (isCellEditable(row, column) && column != getColumnCount() - 1) { if (c instanceof JTextField) { ((JTextField) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.BLACK)); } else if (c instanceof JComboBox) { ((JComboBox) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.BLACK)); } else if (c instanceof JLabel) { ((JLabel) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.BLACK)); } } return c; } }; filters.setSurrendersFocusOnKeystroke(true); filters.setShowGrid(false); filters.setRowHeight(22); filters.setOpaque(false); for (Integer i = 0; i < filterOptions.length; i++) { final Object[] items = filterOptions[i]; if (items != null && items.length > 1) { setComboBoxEditor(i, items); } else { final DefaultCellEditor defaultCellEditor = new DefaultCellEditor(new JTextField()); defaultCellEditor.setClickCountToStart(1); filters.getColumnModel().getColumn(i + 1).setCellEditor(defaultCellEditor); } } filters.setRowSelectionAllowed(false); filters.setDragEnabled(false); filters.setColumnSelectionAllowed(false); filters.setDefaultEditor(JButton.class, new JButtonCellEditor()); filters.setDefaultRenderer(Object.class, new DefaultTableRenderer() { private static final long serialVersionUID = -4811729559786534118L; @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (invisibleFilterCols.contains(column)) c = new JLabel(""); return c; } }); filters.setDefaultRenderer(JButton.class, new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JButton b = (JButton) value; b.setBorderPainted(false); b.setContentAreaFilled(false); return b; } }); filters.setDefaultRenderer(JLabel.class, new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { return (JLabel) value; } }); filters.setDefaultEditor(JButton.class, new JButtonCellEditor()); filters.getModel().setValueAt(new JLabel(""), 0, 0); JButton jButton2 = new JButton(noFiltrarAction); JButton jButton = new JButton(filtrarAction); jButton.setBorderPainted(false); jButton2.setBorderPainted(false); jButton.setContentAreaFilled(false); jButton2.setContentAreaFilled(false); if (jButton.getIcon() != null) jButton.setPreferredSize( new Dimension(jButton.getIcon().getIconWidth(), jButton.getIcon().getIconHeight())); if (jButton2.getIcon() != null) jButton2.setPreferredSize( new Dimension(jButton2.getIcon().getIconWidth(), jButton2.getIcon().getIconHeight())); filters.getModel().setValueAt(jButton, 0, columnNamesLength - 1); filters.getColumnModel().getColumn(columnNamesLength - 1).setMinWidth(jButton.getWidth() + 24); filters.getModel().setValueAt(jButton2, 0, columnNamesLength); filters.getColumnModel().getColumn(columnNamesLength).setMinWidth(jButton2.getWidth() + 14); cuenta.setHorizontalAlignment(JLabel.CENTER); cuenta.setText("?/?"); filters.getModel().setValueAt(cuenta, 0, columnNamesLength + 1); tablePanel.add(filters, BorderLayout.NORTH); Vector<String> headers = new Vector<String>(); headers.add(""); headers.addAll(Arrays.asList(columnNames)); MyTableModel model = new MyTableModel(headers, 0); table = new JTable(model) { private static final long serialVersionUID = 949284378605881770L; private int highLightedRow = -1; private Rectangle dirtyRegion = null; public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); try { if (AdminPanel.this.myRendererColoring != null) c.setBackground(AdminPanel.this.myRendererColoring .getColor(AdminPanel.this.table.getValueAt(row, 1))); } catch (Throwable t) { log.error("Error al colorear la celda: " + t); } return c; } @Override protected void processMouseMotionEvent(MouseEvent e) { try { int row = rowAtPoint(e.getPoint()); Graphics g = getGraphics(); if (row == -1) { highLightedRow = -1; } // row changed if (highLightedRow != row) { if (null != dirtyRegion) { paintImmediately(dirtyRegion); } for (int j = 0; j < getRowCount(); j++) { if (row == j) { // highlight Rectangle firstRowRect = getCellRect(row, 0, false); Rectangle lastRowRect = getCellRect(row, getColumnCount() - 1, false); dirtyRegion = firstRowRect.union(lastRowRect); g.setColor(new Color(0xff, 0xff, 0, 100)); g.fillRect((int) dirtyRegion.getX(), (int) dirtyRegion.getY(), (int) dirtyRegion.getWidth(), (int) dirtyRegion.getHeight()); highLightedRow = row; } } } } catch (Exception ex) { } super.processMouseMotionEvent(e); } }; table.setRowHeight(22); table.setOpaque(false); // table.setAutoCreateRowSorter(true); table.setDragEnabled(false); table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(false); table.setDefaultEditor(JButton.class, new JButtonCellEditor()); table.setDefaultRenderer(JButton.class, new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JButton b = (JButton) value; if (b != null) { b.setBorderPainted(false); b.setContentAreaFilled(false); } return b; } }); JScrollPane jScrollPane = new JScrollPane(table); jScrollPane.setOpaque(false); jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); jScrollPane.getViewport().setOpaque(false); tablePanel.add(jScrollPane, BorderLayout.CENTER); }
From source file:org.apache.cayenne.modeler.editor.ObjEntityRelationshipPanel.java
protected void rebuildTable(ObjEntity entity) { final ObjRelationshipTableModel model = new ObjRelationshipTableModel(entity, mediator, this); model.addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { if (table.getSelectedRow() >= 0) { ObjRelationship rel = model.getRelationship(table.getSelectedRow()); enabledResolve = rel.getSourceEntity().getDbEntity() != null; resolveMenu.setEnabled(enabledResolve); }//from w ww .ja va 2 s.c om } }); table.setModel(model); table.setRowHeight(25); table.setRowMargin(3); TableColumn col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_TARGET_PATH); col.setCellEditor(new DbRelationshipPathComboBoxEditor()); col.setCellRenderer(new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); setToolTipText( "To choose relationship press enter two times.To choose next relationship press dot."); return this; } }); col = table.getColumnModel().getColumn(ObjRelationshipTableModel.REL_DELETE_RULE); JComboBox deleteRulesCombo = Application.getWidgetFactory().createComboBox(DELETE_RULES, false); deleteRulesCombo.setFocusable(false); deleteRulesCombo.setEditable(true); ((JComponent) deleteRulesCombo.getEditor().getEditorComponent()).setBorder(null); deleteRulesCombo.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); deleteRulesCombo.setSelectedIndex(0); // Default to the first value col.setCellEditor(Application.getWidgetFactory().createCellEditor(deleteRulesCombo)); tablePreferences.bind(table, null, null, null, ObjRelationshipTableModel.REL_NAME, true); }
From source file:org.apache.jmeter.util.JMeterUtils.java
/** * Apply HiDPI mode management to {@link JTable} * @param table the {@link JTable} which should be adapted for HiDPI mode *//*www .j av a 2 s . com*/ public static void applyHiDPI(JTable table) { if (JMeterUtils.getHiDPIMode()) { table.setRowHeight((int) Math.round(table.getRowHeight() * JMeterUtils.getHiDPIScaleFactor())); } }
From source file:org.pentaho.reporting.engine.classic.demo.ancient.demo.swingicons.SwingIconsDemoPanel.java
/** * Constructs the demo application./*from ww w . ja v a2s . c om*/ */ public SwingIconsDemoPanel() { data = new SwingIconsDemoTableModel(); setLayout(new BorderLayout()); setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); final JTable table = new JTable(data); table.setDefaultRenderer(Image.class, new ImageCellRenderer()); table.setRowHeight(26); final JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); final JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout(FlowLayout.TRAILING)); buttonPanel.add(new JButton(new SelectRepositoryFileAction())); add(buttonPanel, BorderLayout.SOUTH); loadData(findDataFile()); }
From source file:org.revager.tools.GUITools.java
/** * Creates a new standard table./*from ww w . j av a 2 s . c om*/ * * @param model * the table model * @param showHeader * true if the header of the table should be visible * * @return the newly created table */ @SuppressWarnings("serial") public static JTable newStandardTable(TableModel model, boolean showHeader) { /* * Prep. for rollover */ if (lastRolloverKey == Integer.MAX_VALUE) { lastRolloverKey = 0; } else { lastRolloverKey++; } final int keyIdx = lastRolloverKey; rollOverRowIndex.put(keyIdx, -1); final JTable table = new JTable(model) { @Override public boolean editCellAt(int row, int column, java.util.EventObject e) { boolean result = super.editCellAt(row, column, e); final Component editor = getEditorComponent(); TableCellRenderer renderer = this.getColumnModel().getColumn(column).getCellRenderer(); Font cellFont = null; if (renderer instanceof DefaultTableCellRenderer) { cellFont = ((DefaultTableCellRenderer) renderer).getFont(); } if (editor != null && editor instanceof JTextComponent) { JTextComponent jTextComponent = (JTextComponent) editor; if (e == null) { jTextComponent.selectAll(); } else { SwingUtilities.invokeLater(jTextComponent::selectAll); } jTextComponent.setBorder(UI.MARKED_BORDER_INLINE); if (cellFont != null) { jTextComponent.setFont(cellFont); } editor.requestFocusInWindow(); } return result; } @Override public TableCellRenderer getCellRenderer(int row, int column) { TableCellRenderer renderer = super.getCellRenderer(row, column); if (renderer instanceof DefaultTableCellRenderer) { ((DefaultTableCellRenderer) renderer).setBorder(new EmptyBorder(3, 3, 3, 3)); } return renderer; } @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int col) { Component comp = super.prepareRenderer(renderer, row, col); // Rollover comp.setBackground(getBackground()); comp = super.prepareRenderer(renderer, row, col); if (!isRowSelected(row) && row == rollOverRowIndex.get(keyIdx)) { comp.setForeground(getForeground()); comp.setBackground(UI.BLUE_BACKGROUND_COLOR); } // Tooltips JComponent jcomp = (JComponent) comp; if (renderer instanceof DefaultTableCellRenderer) { String toolTip = ((DefaultTableCellRenderer) renderer).getToolTipText(); if (!StringUtils.isEmpty(toolTip)) { jcomp.setToolTipText(toolTip); } } return comp; } }; // Table properties table.setRowHeight(UI.TABLE_ROW_HEIGHT); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setShowGrid(false); table.setShowHorizontalLines(true); table.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); // Rollover MouseInputAdapter rolloverListener = new MouseInputAdapter() { @Override public void mouseExited(MouseEvent e) { rollOverRowIndex.put(keyIdx, -1); table.repaint(); } @Override public void mouseMoved(MouseEvent e) { int row = table.rowAtPoint(e.getPoint()); if (row != rollOverRowIndex.get(keyIdx)) { rollOverRowIndex.put(keyIdx, row); table.repaint(); } } }; table.addMouseMotionListener(rolloverListener); table.addMouseListener(rolloverListener); // Header if (!showHeader) { table.setTableHeader(null); } return table; }
From source file:pcgen.gui2.dialog.CharacterHPDialog.java
private void initComponents() { setDefaultCloseOperation(DISPOSE_ON_CLOSE); Container pane = getContentPane(); pane.setLayout(new BorderLayout()); JTable table = new JTable(tableModel) { @Override/*from w w w. j a v a2 s.com*/ public TableCellEditor getCellEditor(int row, int column) { if (column == 5) {//TODO: the max roll should be calculated in a different manner String hd = levels.getClassTaken(levels.getElementAt(row)).getHD(); int max = NumberUtils.toInt(hd); return new IntegerEditor(1, max); } else { return super.getCellEditor(row, column); } } }; table.setDefaultRenderer(JButton.class, new Renderer()); table.setDefaultEditor(JButton.class, new Editor()); table.setCellSelectionEnabled(false); table.setRowHeight(new IntegerEditor(1, 10).getPreferredSize().height); JTableHeader header = table.getTableHeader(); header.setReorderingAllowed(false); JScrollPane scrollPane = new JScrollPane(table); pane.add(scrollPane, BorderLayout.CENTER); Box box = Box.createHorizontalBox(); box.add(new JLabel("Total Hp:")); box.add(Box.createHorizontalStrut(3)); final ReferenceListener<Integer> hpListener = new ReferenceListener<Integer>() { @Override public void referenceChanged(ReferenceEvent<Integer> e) { totalHp.setText(e.getNewReference().toString()); } }; ReferenceFacade<Integer> hpRef = character.getTotalHPRef(); totalHp.setText(hpRef.get().toString()); hpRef.addReferenceListener(hpListener); box.add(totalHp); box.add(Box.createHorizontalStrut(5)); JButton button = new JButton("Reroll All"); button.setActionCommand("Reroll"); button.addActionListener(this); box.add(button); box.add(Box.createHorizontalGlue()); button = new JButton("Close"); button.setActionCommand("Close"); button.addActionListener(this); box.add(button); pane.add(box, BorderLayout.SOUTH); addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { //Make sure to remove the listeners so that the garbage collector can //dispose of this dialog and prevent a memory leak levels.removeHitPointListener(tableModel); character.getTotalHPRef().removeReferenceListener(hpListener); } }); Utility.installEscapeCloseOperation(this); }
From source file:pcgen.gui2.dialog.PostLevelUpDialog.java
private void initComponents() { setDefaultCloseOperation(DISPOSE_ON_CLOSE); Container pane = getContentPane(); pane.setLayout(new BorderLayout()); JTable table = new JTable(tableModel) { @Override/*w ww . j ava 2 s . c om*/ public TableCellEditor getCellEditor(int row, int column) { if (column == LevelTableModel.COL_ROLLED_HP && row < numLevels) {//TODO: the max roll should be calculated in a different manner String hd = levels.getClassTaken(levels.getElementAt(row + oldLevel)).getHD(); int max = NumberUtils.toInt(hd); return new SpinnerEditor(new SpinnerNumberModel(1, 1, max, 1)); } return super.getCellEditor(row, column); } @Override public TableCellRenderer getCellRenderer(int row, int column) { if (column == LevelTableModel.COL_ROLLED_HP && row < numLevels) { return new SpinnerRenderer(); } return super.getCellRenderer(row, column); } }; table.setCellSelectionEnabled(false); table.setRowHeight(new JSpinner().getPreferredSize().height); JTableHeader header = table.getTableHeader(); header.setReorderingAllowed(false); JScrollPane scrollPane = new JScrollPane(table); pane.add(scrollPane, BorderLayout.CENTER); Box box = Box.createHorizontalBox(); box.add(Box.createHorizontalGlue()); JButton button = new JButton(LanguageBundle.getString("in_close")); //$NON-NLS-1$ button.setMnemonic(LanguageBundle.getMnemonic("in_mn_close")); //$NON-NLS-1$ button.setActionCommand("Close"); //$NON-NLS-1$ button.addActionListener(this); box.add(button); pane.add(box, BorderLayout.SOUTH); addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { //Make sure to remove the listeners so that the garbage collector can //dispose of this dialog and prevent a memory leak levels.removeHitPointListener(tableModel); } }); Utility.installEscapeCloseOperation(this); }