我在这里(下面)有一个方法,它本身很有效。 问题是我想根据JTable通过参数传递的行为来改变它的行为。
例如,现在我有两个JTable,table1和表2.我想设置一个if语句,说if(table == table1){...} else if(table == table2){。 ..}
问题是无论我尝试什么(比较哈希码,比较e.source与组件,源哈希码到table1.hashcode()等)我无法让它在表中注册传递实际上是table1。
有没有办法以这种方式比较组件? (同样,确认哪个JTable'表'(JTable传入参数)是'table1'或'table2'。
这是我的代码:
public TableCellEditor myCellEditor = new DefaultCellEditor(new JTextField()) {
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
delegate.setValue((editorComponent instanceof JTextField) ? null : value);
myCellEditor.addCellEditorListener(
new CellEditorListener() {
public void editingCanceled(ChangeEvent e) {
}
public void editingStopped(ChangeEvent e) {
//if (table == table1){...}
}
});
return editorComponent;
}
答案 0 :(得分:0)
你需要知道甚至开除了哪张桌子?然后使用e.getSource();
如果您想查看tableX和tableY是否相似,那么您需要编写Comparator。 This示例可能会有所帮助。通常,比较器非常方便且易于实现。
尽量避免
new CellEditorListener() {
public void editingCanceled(ChangeEvent e) {
}
public void editingStopped(ChangeEvent e) {
//if (table == table1){...}
}
});
而是创建2 CellEditors
并将侦听器分配给每个..
myCellEditor1.addCellEditorListener(listener);
myCellEditor2.addCellEditorListener(listener);
//Now by accessing e.getSource you know which celleditor fired!
CellEditorListener listener= new CellEditorListener() {
public void editingCanceled(ChangeEvent e) {
}
public void editingStopped(ChangeEvent e) {
if (e.getSource()==myCellEditor1)
else if (e.getSource()==myCellEditor2)
}
});