Mega Code Archive

 
Categories / Java / Swing Components
 

Button Table Example

// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; /**  * @version 1.0 11/09/98  */ public class JButtonTableExample extends JFrame {   public JButtonTableExample() {     super("JButtonTable Example");     DefaultTableModel dm = new DefaultTableModel();     dm.setDataVector(new Object[][] { { "button 1", "foo" },         { "button 2", "bar" } }, new Object[] { "Button", "String" });     JTable table = new JTable(dm);     table.getColumn("Button").setCellRenderer(new ButtonRenderer());     table.getColumn("Button").setCellEditor(         new ButtonEditor(new JCheckBox()));     JScrollPane scroll = new JScrollPane(table);     getContentPane().add(scroll);     setSize(400, 100);     setVisible(true);   }   public static void main(String[] args) {            JButtonTableExample frame = new JButtonTableExample();     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });   } } /**  * @version 1.0 11/09/98  */ class ButtonRenderer extends JButton implements TableCellRenderer {   public ButtonRenderer() {     setOpaque(true);   }   public Component getTableCellRendererComponent(JTable table, Object value,       boolean isSelected, boolean hasFocus, int row, int column) {     if (isSelected) {       setForeground(table.getSelectionForeground());       setBackground(table.getSelectionBackground());     } else {       setForeground(table.getForeground());       setBackground(UIManager.getColor("Button.background"));     }     setText((value == null) ? "" : value.toString());     return this;   } } /**  * @version 1.0 11/09/98  */ class ButtonEditor extends DefaultCellEditor {   protected JButton button;   private String label;   private boolean isPushed;   public ButtonEditor(JCheckBox checkBox) {     super(checkBox);     button = new JButton();     button.setOpaque(true);     button.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent e) {         fireEditingStopped();       }     });   }   public Component getTableCellEditorComponent(JTable table, Object value,       boolean isSelected, int row, int column) {     if (isSelected) {       button.setForeground(table.getSelectionForeground());       button.setBackground(table.getSelectionBackground());     } else {       button.setForeground(table.getForeground());       button.setBackground(table.getBackground());     }     label = (value == null) ? "" : value.toString();     button.setText(label);     isPushed = true;     return button;   }   public Object getCellEditorValue() {     if (isPushed) {       //        //        JOptionPane.showMessageDialog(button, label + ": Ouch!");       // System.out.println(label + ": Ouch!");     }     isPushed = false;     return new String(label);   }   public boolean stopCellEditing() {     isPushed = false;     return super.stopCellEditing();   }   protected void fireEditingStopped() {     super.fireEditingStopped();   } }