📄 multicomponenttable2.java
字号:
/* (swing1.1beta3) */package tame.examples;import java.awt.Component;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.DefaultCellEditor;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellRenderer;import tame.table.EachRowEditor;import tame.table.EachRowRenderer;/*I made some changes to the constructor of this in orderto get it to compile. AT@author Nobuo Tamemasa, Andrew Thompson@version 1.0 11/09/98, 1.1 2004/03/05*/public class MultiComponentTable2 extends JFrame { public MultiComponentTable2(){ super("MultiComponent Table"); DefaultTableModel dm = new DefaultTableModel() { public boolean isCellEditable(int row, int column) { if (column == 0) { return true; } return false; } }; dm.setDataVector( new Object[][]{ {"true" ,"String" ,"JLabel" ,"JComboBox"}, {"false" ,"String" ,"JLabel" ,"JComboBox"}, {new Boolean(true) ,"Boolean" ,"JCheckBox","JCheckBox"}, {new Boolean(false) ,"Boolean" ,"JCheckBox","JCheckBox"}, {"true" ,"String" ,"JLabel" ,"JTextField"}, {"false" ,"String" ,"JLabel" ,"JTextField"}}, new Object[]{"Component","Data","Renderer","Editor"}); CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer(); EachRowRenderer rowRenderer = new EachRowRenderer(); rowRenderer.add(2, checkBoxRenderer); rowRenderer.add(3, checkBoxRenderer); JComboBox comboBox = new JComboBox(); comboBox.addItem("true"); comboBox.addItem("false"); JCheckBox checkBox = new JCheckBox(); checkBox.setHorizontalAlignment(JLabel.CENTER); DefaultCellEditor comboBoxEditor = new DefaultCellEditor(comboBox); DefaultCellEditor checkBoxEditor = new DefaultCellEditor(checkBox); // moved to before rowEditor instantiate JTable table = new JTable(dm); EachRowEditor rowEditor = new EachRowEditor( table ); // I think Nobuo was thinking of the rowRenderer above // I commented this out and it compiles, at least /* rowEditor.add(0, comboBoxEditor); rowEditor.add(1, comboBoxEditor); rowEditor.add(2, checkBoxEditor); rowEditor.add(3, checkBoxEditor); */ table.getColumn("Component").setCellRenderer(rowRenderer); table.getColumn("Component").setCellEditor(rowEditor); JScrollPane scroll = new JScrollPane(table); getContentPane().add( scroll ); setSize( 400, 160 ); setVisible(true); } public static void main(String[] args) { MultiComponentTable2 frame = new MultiComponentTable2(); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit(0); } }); }}/**@author Nobuo Tamemasa@version 1.0 11/09/98*/class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { CheckBoxRenderer() { setHorizontalAlignment(JLabel.CENTER); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); //super.setBackground(table.getSelectionBackground()); setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(table.getBackground()); } setSelected((value != null && ((Boolean)value).booleanValue())); return this; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -