首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JTable中增添JButton

2012-11-11 
JTable中添加JButtonpackage ljsearchappimport java.awt.Componentimport java.awt.FlowLayoutimport

JTable中添加JButton

package ljsearchapp;import java.awt.Component;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.EventObject;import javax.swing.DefaultCellEditor;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.UIManager;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellRenderer;public class Test1 extends JFrame {    JTable t;    public Test1() {        setBounds(100, 100, 200, 200);        JPanel pane = new JPanel();        DefaultTableModel dm = new DefaultTableModel();        dm.setDataVector(new Object[][]{{"Button 1", "foo"},                    {"Button 2", "bar"},{"Button 2", "bar"},{"Button 2", "bar"},{"Button 2", "bar"},{"Button 2", "bar"}},                new Object[]{"Button", "String"});        t = new JTable(dm);        t.getColumn("Button").setCellRenderer(new ButtonRenderer());        t.getColumn("Button").setCellEditor(new ButtonEditor(new JTextField()));        pane.setLayout(new FlowLayout());        pane.add(t);        this.add(pane);        setVisible(true);    }}class ButtonEditor extends DefaultCellEditor {    protected JButton button;    private String label;    private boolean isPushed;    public ButtonEditor(JTextField checkBox) {        super(checkBox);        this.setClickCountToStart(1);        button = new JButton();        button.setOpaque(true);        button.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                fireEditingStopped();            }        });    }    public Component getTableCellEditorComponent(final 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);        button.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                System.out.println(table.getSelectedRow()) ;                System.out.println(table.getSelectedColumn()) ;            }        });        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();    }    @Override    public boolean shouldSelectCell(EventObject anEvent) {        System.out.println(1);        return super.shouldSelectCell(anEvent);    }            public static void main(String[] args){        Test1 test1 = new Test1() ;    }}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("UIManager"));        }        setText((value == null) ? "" : value.toString());        return this;    }}

热点排行