jungil
Posts: 5
Nickname: jungil
Registered: Aug, 2002
Help!About TableCellEditor
Posted: Aug 13, 2002 5:35 AM
Advertisement
My source is like this: package untitled9; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; import java.util.*; import javax.swing.table.*; import javax.swing.event.*; import java.io.*; public class Untitled1 extends JFrame { public Untitled1() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setSize(new Dimension(479, 260)); getContentPane().setLayout(null); this.setEnabled(true); leftTable.setBounds(new Rectangle(41, 79, 71, 121)); leftTable.setModel(model1); leftTable.setRowHeight(20); TableColumnModel columnModel = leftTable.getColumnModel(); TableColumn column = columnModel.getColumn(0); column.setCellEditor(new OMRDefaultCellEditor()); column.setCellRenderer(new OMRDefaultCellRender()); leftTable.setCellSelectionEnabled(true); topTable.setBounds(new Rectangle(112, 79, 308, 20)); topTable.setModel(model2); topTable.setRowHeight(20); defaultTable.setBounds(new Rectangle(112, 99, 308, 101)); defaultTable.setModel(model3); defaultTable.setRowHeight(20); this.getContentPane().add(leftTable, null); this.getContentPane().add(topTable, null); this.getContentPane().add(defaultTable, null); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { ; } Untitled1 unTitle = new Untitled1(); unTitle.show(); } private JTable leftTable = new JTable(); private DefaultTableModel model1 = new DefaultTableModel(6,1); private DefaultTableModel model2 = new DefaultTableModel(1,5); private DefaultTableModel model3 = new DefaultTableModel(5,5); private JList jList1 = new JList(); private DefaultListModel listModel = new DefaultListModel(); private JTable topTable = new JTable(); private JTable defaultTable = new JTable(); } class OMRDefaultCellEditor implements TableCellEditor { public OMRDefaultCellEditor() { ; } public void addCellEditorListener(CellEditorListener listener) { listenerList.add(CellEditorListener.class,listener); } public void removeCellEditorListener(CellEditorListener listener) { listenerList.remove(CellEditorListener.class,listener); } public void cancelCellEditing(){ ; } public boolean stopCellEditing(){ fireEditingStopped(); return true; } protected void fireEditingStopped(){ CellEditorListener listener; Object[] listeners=listenerList.getListenerList(); for(int i=0;i<listeners.length;i++){ if(listeners[i]==CellEditorListener.class){ listener=(CellEditorListener)listeners[i+1]; listener.editingStopped(changeEvent); } } } public boolean isCellEditable(EventObject event){ return true; } public boolean shouldSelectCell(EventObject event){ return true; } public Component getComponent() { return component; } public Object getCellEditorValue() { component.setSelectedValue(value, true); return this.value; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { JList list = new JList(); list.setVisibleRowCount(1); component = list; DefaultListModel listModel = new DefaultListModel(); JScrollPane scrollPane = new JScrollPane(); JButton button = new JButton("^_^"); button.setBackground(Color.GREEN); if(row == 0 && column == 0) return button; list.setModel(listModel); for(int i = 1; i <= 100; i++) { listModel.addElement("" + i); } this.value = list.getSelectedValue(); this.component = list; scrollPane.getViewport().add(list, null); return scrollPane; } protected EventListenerList listenerList=new EventListenerList(); protected ChangeEvent changeEvent=new ChangeEvent(this); private Object value = "" + 1; private JList component; } class OMRDefaultCellRender implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected, boolean hasFocus,int row,int column) { JList list = new JList(); DefaultListModel listModel = new DefaultListModel(); JScrollPane scrollPane = new JScrollPane(); JButton button = new JButton("^_^"); button.setBackground(Color.GREEN); if(row == 0 && column == 0) return button; list.setModel(listModel); listModel.addElement("" + 1); scrollPane.getViewport().add(list, null); return scrollPane; } }
When i changed one JList's value and cliked another JList, the first JList's value can not be saved and changed to initial value. how can i do for it?