JTable 加入JButton

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.util.*;
  4. import javax.swing.*;
  5. import javax.swing.table.*;
  6. public class TableButton3 extends JFrame
  7. {
  8.     public TableButton3()
  9.     {
  10.         String[] columnNames = {"Date""String""Integer""Number"""};
  11.         Object[][] data =
  12.         {
  13.             {new Date(), "A"new Integer(1), new Double(5.1), "Delete0"},
  14.             {new Date(), "B"new Integer(2), new Double(6.2), "Delete1"},
  15.             {new Date(), "C"new Integer(3), new Double(7.3), "Delete2"},
  16.             {new Date(), "D"new Integer(4), new Double(8.4), "Delete3"}
  17.         };
  18.         DefaultTableModel model = new DefaultTableModel(data, columnNames);
  19.         JTable table = new JTable( model )
  20.         {
  21.             public Class getColumnClass(int column)
  22.             {
  23.                 return getValueAt(0, column).getClass();
  24.             }
  25.         };
  26.         JScrollPane scrollPane = new JScrollPane( table );
  27.         getContentPane().add( scrollPane );
  28.         ButtonColumn buttonColumn = new ButtonColumn(table, 4);
  29.         ButtonColumn buttonColumn2 = new ButtonColumn(table, 3);
  30.     }
  31.     public static void main(String[] args)
  32.     {
  33.         TableButton3 frame = new TableButton3();
  34.         frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
  35.         frame.pack();
  36.         frame.setVisible(true);
  37.     }
  38.     class ButtonColumn extends AbstractCellEditor
  39.         implements TableCellRenderer, TableCellEditor, ActionListener
  40.     {
  41.         JTable table;
  42.         JButton renderButton;
  43.         JButton editButton;
  44.         String text;
  45.         public ButtonColumn(JTable table, int column)
  46.         {
  47.             super();
  48.             this.table = table;
  49.             renderButton = new JButton();
  50.             editButton = new JButton();
  51.             editButton.setFocusPainted( false );
  52.             editButton.addActionListener( this );
  53.             TableColumnModel columnModel = table.getColumnModel();
  54.             columnModel.getColumn(column).setCellRenderer( this );
  55.             columnModel.getColumn(column).setCellEditor( this );
  56.         }
  57.         public Component getTableCellRendererComponent(
  58.             JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
  59.         {
  60.             if (hasFocus)
  61.             {
  62.                 renderButton.setForeground(table.getForeground());
  63.                 renderButton.setBackground(UIManager.getColor("Button.background"));
  64.             }
  65.             else if (isSelected)
  66.             {
  67.                 renderButton.setForeground(table.getSelectionForeground());
  68.                  renderButton.setBackground(table.getSelectionBackground());
  69.             }
  70.             else
  71.             {
  72.                 renderButton.setForeground(table.getForeground());
  73.                 renderButton.setBackground(UIManager.getColor("Button.background"));
  74.             }
  75.             renderButton.setText( (value == null) ? "" : value.toString() );
  76.             return renderButton;
  77.         }
  78.         public Component getTableCellEditorComponent(
  79.             JTable table, Object value, boolean isSelected, int row, int column)
  80.         {
  81.             text = (value == null) ? "" : value.toString();
  82.             editButton.setText( text );
  83.             return editButton;
  84.         }
  85.         public Object getCellEditorValue()
  86.         {
  87.             return text;
  88.         }
  89.         public void actionPerformed(ActionEvent e)
  90.         {
  91.             fireEditingStopped();
  92.             System.out.println( e.getActionCommand() + " : " + table.getSelectedRow());
  93.         }
  94.     }
  95. }

你可能感兴趣的:(String,object,table,null,Integer,delete)