[英]How do I check which Swing component is being passed as a parameter?
我在下面有一個方法,它本身可以很好地工作。 問題是我想根據通過參數傳遞的JTable更改其行為。
例如,現在我有兩個JTable,分別是table1和table2。我想建立一條if語句,它表示if(table == table1){...} else if(table == table2){...}
問題是無論我如何嘗試(比較哈希碼,將e.source與組件進行比較,將源哈希碼與table1.hashcode()等),當傳遞的表被保存時,我都無法注冊它實際上是表1。
有沒有辦法以這種方式比較組件? (再次確認哪個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;
}
您需要知道什至在哪張桌子上開了火? 然后使用e.getSource();
如果要查看tableX和tableY是否相似,則需要編寫Comparator 。 這個例子可能會有所幫助。 通常,比較器非常方便並且易於實現。
盡量避免
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)
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.