链接JComboBox& JTable中

时间:2010-08-13 05:04:11

标签: java swing

要求: 我有一个ComboBox中显示的字符串列表。这些字符串中的每一个都可以具有一些属性。这些属性显示在PropertyTable中。 ComboBox所选项目的属性显示在表格中。此外,我们使用PropertyTable编辑或设置comboBox中所选项的属性值。

问题: 当我取消选择组合框项目比较item1 时,PropertyTable中的所有现有属性值都被设置为item1的新属性值。再次,当我选择这个item1时,我应该将属性值(,即在取消选择item1之前的值)上面的内容返回到PropertyTable中?

当前实施逻辑:

我为每个PropertyTableCell都有 TableCellListner ,每当更改单元格内容时,它会获取单元格的新值并将其作为新属性值分配给组合框的选定项目。每当选择新项目时,将使用所选项目的属性值刷新表格。

  //before is Table initialization code

Action action = new AbstractAction()
{
    public void actionPerformed(ActionEvent e)
    {
        TableCellListener table = (TableCellListener)e.getSource();
        String selectedItem=(String)ComponentPropComboBox.getSelectedItem();
        if(table.getColumn()==1 && selectedItem!=null)
        {
            Property property=propertyMap.get(selectedItem);

            else if(table.getRow()==0)
            {
                property.setProperty("MIN_LENGTH", (String)table.getNewValue());
                propertyMap.put(selectedItem, property);
            }

            else if(table.getRow()==1)
            {
                property.setProperty("STARTS_WITH_STRING", (String)table.getNewValue());
                propertyMap.put(selectedItem, property);
            }
          }
    }
};

TableCellListener tcl = new TableCellListener(PropertiesTable, action);

如何通过克服上述挑战来实现此要求?

PS: TableCellListner不是一个Java通用库。您可以通过以下链接查看代码及其说明:

我相信问题很明显!如果问题不明确,请告诉我。谢谢您的帮助&捐赠知识!

1 个答案:

答案 0 :(得分:1)

在侦听JComboBox选择的代码中。在它的开始它设置一个布尔值,该项目正在被更改。然后让表刷新代码忽略布尔值设置时发生的事件。完成刷新后,再将布尔值设置回来。