如何检查哪个Swing组件作为参数传递?

时间:2017-03-15 13:40:58

标签: java swing

我在这里(下面)有一个方法,它本身很有效。 问题是我想根据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;
    }

1 个答案:

答案 0 :(得分:0)

你需要知道甚至开除了哪张桌子?然后使用e.getSource();如果您想查看tableX和tableY是否相似,那么您需要编写ComparatorThis示例可能会有所帮助。通常,比较器非常方便且易于实现。

尽量避免

 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)

                }
            });