⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multicomponenttable.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
/* (swing1.1beta3) */package tame.examples;import java.awt.Component;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.EventObject;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.JTextField;import javax.swing.event.CellEditorListener;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellEditor;/**@author Nobuo Tamemasa@version 1.0 11/09/98*/public class MultiComponentTable extends JFrame {  public MultiComponentTable(){    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[][]{        {new ComboString("true") ,"ComboString","JLabel"   ,"JComboBox"},        {new ComboString("false"),"ComboString","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"});    JTable table = new JTable(dm);    table.getColumn("Component").setCellRenderer(      new MultiRenderer());    table.getColumn("Component").setCellEditor(      new MultiEditor());    JScrollPane scroll = new JScrollPane(table);    getContentPane().add( scroll );    setSize( 400, 160 );    setVisible(true);  }  public static void main(String[] args) {    MultiComponentTable frame = new MultiComponentTable();    frame.addWindowListener( new WindowAdapter() {      public void windowClosing( WindowEvent e ) {        System.exit(0);      }    });  }}/**@author Nobuo Tamemasa@version 1.0 11/09/98*/class ComboString {  String str;  ComboString(String str) {    this.str = str;  }  public String toString() {    return str;  }}/**@author Nobuo Tamemasa@version 1.0 11/09/98*/class MultiRenderer extends DefaultTableCellRenderer {  JCheckBox checkBox = new JCheckBox();  public Component getTableCellRendererComponent(                     JTable table, Object value,                     boolean isSelected, boolean hasFocus,                     int row, int column) {    if (value instanceof Boolean) {                    // Boolean      checkBox.setSelected(((Boolean)value).booleanValue());      checkBox.setHorizontalAlignment(JLabel.CENTER);      return checkBox;    }    String str = (value == null) ? "" : value.toString();    return super.getTableCellRendererComponent(         table,str,isSelected,hasFocus,row,column);  }}/**@author Nobuo Tamemasa@version 1.0 11/09/98*/class MultiEditor implements TableCellEditor {  private final static int      COMBO = 0;  private final static int    BOOLEAN = 1;  private final static int     STRING = 2;  private final static int NUM_EDITOR = 3;  DefaultCellEditor[] cellEditors;  JComboBox comboBox;  int flg;  public MultiEditor() {    cellEditors = new DefaultCellEditor[NUM_EDITOR];    comboBox = new JComboBox();    comboBox.addItem("true");    comboBox.addItem("false");    cellEditors[COMBO]   = new DefaultCellEditor(comboBox);    JCheckBox checkBox   = new JCheckBox();    //checkBox.setOpaque( true );    checkBox.setHorizontalAlignment(JLabel.CENTER);    cellEditors[BOOLEAN] = new DefaultCellEditor(checkBox);    JTextField textField = new JTextField();    cellEditors[STRING]  = new DefaultCellEditor(textField);    flg = NUM_EDITOR;      // nobody  }  public Component getTableCellEditorComponent(JTable table, Object value,              boolean isSelected, int row, int column) {    if (value instanceof ComboString) {                       // ComboString      flg = COMBO;      String str = (value == null) ? "" : value.toString();      return cellEditors[COMBO].getTableCellEditorComponent(                       table, str,   isSelected, row, column);    } else if (value instanceof Boolean) {                    // Boolean      flg = BOOLEAN;      return cellEditors[BOOLEAN].getTableCellEditorComponent(                       table, value, isSelected, row, column);    } else if (value instanceof String) {                     // String      flg = STRING;      return cellEditors[STRING].getTableCellEditorComponent(                       table, value, isSelected, row, column);    }    return null;  }  public Object getCellEditorValue() {    switch (flg) {      case   COMBO:        String str = (String)comboBox.getSelectedItem();        return new ComboString(str);      case BOOLEAN:      case  STRING:        return cellEditors[flg].getCellEditorValue();      default:         return null;    }  }  public Component getComponent() {    return cellEditors[flg].getComponent();  }  public boolean stopCellEditing() {    return cellEditors[flg].stopCellEditing();  }  public void cancelCellEditing() {    cellEditors[flg].cancelCellEditing();  }  public boolean isCellEditable(EventObject anEvent) {    return cellEditors[flg].isCellEditable(anEvent);  }  public boolean shouldSelectCell(EventObject anEvent) {    return cellEditors[flg].shouldSelectCell(anEvent);  }  public void addCellEditorListener(CellEditorListener l) {    cellEditors[flg].addCellEditorListener(l);  }  public void removeCellEditorListener(CellEditorListener l) {    cellEditors[flg].removeCellEditorListener(l);  }  public void setClickCountToStart(int n) {    cellEditors[flg].setClickCountToStart(n);  }  public int getClickCountToStart() {    return cellEditors[flg].getClickCountToStart();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -