添加按钮到jtable

我在jtable中搜索了添加按钮的教程,并找到了一个类文件, http: //tips4java.wordpress.com/2009/07/12/table-button-column/在哪里为按钮设置标签?

[code] private void createTable(){ model = new DefaultTableModel(); editorTable.setModel(model); model.addColumn("COL1"); model.addColumn("COL2"); model.addColumn("ADD"); model.addColumn("DELETE"); model.addRow(new Object[]{"DATA1", "DATA2"}); Action delete = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { editorTable = (JTable) e.getSource(); int modelRow = Integer.valueOf(e.getActionCommand()); ((DefaultTableModel) editorTable.getModel()).removeRow(modelRow); } }; ButtonColumn bc = new ButtonColumn(editorTable, delete, 3); bc.setMnemonic(KeyEvent.VK_D); } [/code] 

它在表格渲染器和编辑器中根据DefaultTableModel中的数据自动设置。 例如,对于表编辑器,代码是:

 public Component getTableCellEditorComponent( JTable table, Object value, boolean isSelected, int row, int column) { ... editButton.setText( value.toString() ); editButton.setIcon( null ); ... } 

其中value是表模型中的值。 有关详细信息,请参阅ButtonColumn.java 。

编辑:由于您要添加4列,您应该将行数据更改为

 model.addRow(new Object[]{"DATA1", "DATA2", "DATA3", "DELETE"}); 

为了查看第4列上的删除按钮。

  MyClass myClass = new MyClass(); jTable1.getColumnModel().getColumn(0).setCellEditor(myClass); jTable1.getColumnModel().getColumn(0).setCellRenderer(myClass); class MyClass extends AbstractCellEditor implements TableCellEditor, TableCellRenderer { @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { JPanel panel=(JPanel)jTable1.getCellRenderer(row, column).getTableCellRendererComponent(table, value, isSelected, isSelected, row, column); panel.setBackground(table.getSelectionBackground()); return panel; } @Override public Object getCellEditorValue() { return null; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { AbstractAction action = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(rootPane,"Row :"+jTable1.getSelectedRow()+" "+ e.getActionCommand() + " clicked"); } }; JButton button1 = new JButton(action); JButton button2 = new JButton(action); button1.setText("Button1"); button2.setText("Button2"); JPanel panel = new JPanel(); panel.add(button1); panel.add(button2); panel.setBackground(table.getBackground()); return panel; } } 

}