Пользовательская реализация Java JTree - PullRequest
1 голос
/ 09 марта 2010

Есть 2 JTree: JTree1 и JTree2. Обратите внимание, что все узлы (страна, город, цвета, синий ...) будут реализованы как JCheckbox es, так что пользователь может выбрать определенные цвета для каждого города или для всей страны, установив соответствующие флажки.

Проблема:

Q1. Я хочу, чтобы в каждой стране или городе были выделены свои цвета. Означает, что если пользователь хочет, чтобы city1.1 имел синий и фиолетовый цвета, а city2.1 - красный, то сначала он должен установить флажок city1.1, а затем синий и фиолетовый, а затем, когда он выбрал city2.1 , затем флажки синий и фиолетовый отменяются, чтобы пользователь мог выбрать цвета для city2.1. Но когда пользователь снова выбирает city1.1, тогда JTree2 должен отображать выбранные цвета (булевый и фиолетовый) для city1.1.

  • Таким образом, для этой цели, является ли JTree (с его узлами в качестве флажков) правильным вариантом реализации, или я должен использовать какой-то другой JComponent?

  • Если JTree - правильный вариант, то как я могу запомнить цвета каждого города?

1 Ответ

2 голосов
/ 09 марта 2010

Так что для этого, JTree (с его узлами в качестве флажков) правильно возможность реализовать или я должен использовать какой-то другой JComponent?

Не совсем уверен, что вы имели в виду, но я лично не стал бы использовать JTree для представления опций справа. Я думаю, что гораздо проще представить JPanel , который содержит опции в данном конкретном случае. Левая сторона кажется хорошей для вашего примера, хотя я действительно не знаю, какие данные попадают в дерево.

Если JTree правильный вариант, то как могу ли я вспомнить цвета каждого город

Обратите внимание, я собираюсь сделать пару предположений:

  1. Левая сторона, содержащая ваши страны и города, остается JTree , а правая сторона может быть JTree или JPanel .
  2. Вы хотите, чтобы параметры отображались в точности так, как они были заданы пользователем в последний раз, прежде чем они выберут другой узел с левой стороны.

Простейший способ добиться этого - добавить TreeSelectionListener в модель выбора дерева (содержащего страны и города). TreeSelectionListener предоставляется с TreeSelectionEvent , который обеспечивает узел, который был выбран , и узел, который станет выбранным. Это даст вам возможность извлечь настройки цвета, которые были заданы для узла, для которого выбор изменяется с , на тот, для которого выбор меняется на . TreeSelectionListener должен быть добавлен к TreeSelectionModel , полученному из JTree , путем вызова его getSelectionModel метода.

Если вы используете эту технику, при выполнении операции с последними выбранными параметрами вам потребуется получить параметры еще раз, прежде чем выполнять операцию. Например, если у вас была кнопка «Сохранить», вы должны проверить извлекать настройки цвета, для которых узел выбран слева. Это делается для того, чтобы зафиксировать любые изменения, которые пользователь, возможно, сделал, что слушатель не захватил (поскольку слушатель срабатывает только при изменении выбора левой руки).

Если вам нужен пример, я написал один на http://www.box.net/shared/hgbet4uf6k.

...