Связывание JComboBox и JTable - PullRequest
       0

Связывание JComboBox и JTable

2 голосов
/ 13 августа 2010

Требование : у меня есть список строк, отображаемых в ComboBox.Каждая из этих строк может иметь некоторые свойства.Эти свойства отображаются в PropertyTable.Свойства выбранного элемента ComboBox отображаются в таблице.Кроме того, мы используем PropertyTable для редактирования или установки значений свойств для выбранного элемента в поле со списком.

Проблема: В момент, когда я отменяю выбор элемента comboBox, скажем item1 , все существующие значения свойств в PropertyTable устанавливаются как новые значения свойств до 1Опять же, когда я возвращаю этот элемент item1 обратно, я должен получить вышеуказанные значения свойств (, т.е. значения до того, как item1 будет отменен ) обратно в PropertyTable?

Текущая реализация логики:

У меня есть TableCellListner для каждого PropertyTableCell, всякий раз, когда изменяется содержимое ячейки, оно принимает новое значение ячейки и присваивает его как новое значение свойства выбранному элементу комбинированного окна.всякий раз, когда выбирается новый элемент, таблица обновляется со значениями свойств выбранного элемента.

  //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 Ответ

1 голос
/ 05 февраля 2011

В коде, который прослушивает выборки JComboBox. При его запуске он устанавливает логическое значение того, что элемент изменяется. Затем пусть ваш код обновления таблицы будет игнорировать события, которые происходят, пока установлено логическое значение. После завершения обновления установите логическое значение обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...