zoukankan      html  css  js  c++  java
  • 一个关于JTabel的DefaultCellEditor渲染很棒的例子

    import java.awt.Color;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    import javax.swing.JCheckBox;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
     
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.DefaultCellEditor;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JOptionPane;
     
    import javax.swing.UIManager;
    import javax.swing.table.TableCellRenderer;
     
    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.setOpaque(true);
            table.setBackground(Color.red);
            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);
                }
            });
        }
    }
     
    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;
        }
    }
     
    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!");
            }
           isPushed = false;
            return new String(label);
        }
     
        public boolean stopCellEditing() {
           isPushed = false;
            return super.stopCellEditing();
        }
     
        protected void fireEditingStopped() {
            super.fireEditingStopped();
        }
    }

  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3285673.html
Copyright © 2011-2022 走看看