簡體   English   中英

如何檢查哪個Swing組件作為參數傳遞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM