powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JTree -> CheckBox
8 сообщений из 8, страница 1 из 1
JTree -> CheckBox
    #33466188
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вперемешку с шампанским...
Так как домой не отпускают, продолжаю работать и задавать вопросы:))
Может есть еще кто...

Создала дерево JTree с CheckBox'сами. Данные из базы.

Теперь надо остледить изменения и назад в базу, обновить данные.

Не знаю как вытянуть массив изменений. А не текущую галочку на боксе.
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33466209
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть нужно получить только те, которые изменились?

я делал так: у объекта есть поле isSelected, для всех объектов я
проверяю это поле и формирую массив

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33466217
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deadyто есть нужно получить только те, которые изменились?

я делал так: у объекта есть поле isSelected, для всех объектов я
проверяю это поле и формирую массив

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3

Желательно. Спасибо, буду пробывать...
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33474992
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем ребятам привет. И не ребятам тоже привет :))

Помогите разобраться:

Есть такой класс:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
 class  CheckBoxNodeEditor  extends  AbstractCellEditor  implements  TreeCellEditor {

  CheckBoxNodeRenderer renderer =  new  CheckBoxNodeRenderer();

  ChangeEvent changeEvent =  null ;

  JTree tree;

   public  CheckBoxNodeEditor(JTree tree) {
     this .tree = tree;
  }

   public  Object getCellEditorValue() {
    JCheckBox checkbox = renderer.getLeafRenderer();
    CheckBoxNode checkBoxNode =  new  CheckBoxNode(checkbox.getText(),
        checkbox.isSelected());
     return  checkBoxNode;
  }

   public   boolean  isCellEditable(EventObject event) {
     boolean  returnValue = false;
     if  (event  instanceof  MouseEvent) {
      MouseEvent mouseEvent = (MouseEvent) event;
      TreePath path = tree.getPathForLocation(mouseEvent.getX(),mouseEvent.getY());
       if  (path !=  null ) {
        Object node = path.getLastPathComponent();
         if  ((node !=  null ) && (node  instanceof  DefaultMutableTreeNode)) {
          DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) node;
          Object userObject = treeNode.getUserObject();
          returnValue = ((treeNode.isLeaf()) && (userObject  instanceof  CheckBoxNode));
        }
      }
    }
     return  returnValue;
  }

   public  Component getTreeCellEditorComponent(JTree tree, Object value,
       boolean  selected,  boolean  expanded,  boolean  leaf,  int  row) {

    Component editor = renderer.getTreeCellRendererComponent(tree, value,
        true, expanded, leaf, row, true);
     final   boolean  b = selected;

    // editor always selected / focused
    ItemListener itemListener =  new  ItemListener() {
       public   void  itemStateChanged(ItemEvent itemEvent)
      {
          if  (stopCellEditing())
         {
             fireEditingStopped();
         }
      }
    };
     if  (editor  instanceof  JCheckBox) {
      ((JCheckBox) editor).addItemListener(itemListener);
    }
     return  editor;
  }
}

 class  CheckBoxNode {
  String text;

   boolean  selected;

   public  CheckBoxNode(String text,  boolean  selected) {
     this .text = text;
     this .selected = selected;
  }

   public   boolean  isSelected()
  {
     return  selected;
  }

   public   void  setSelected( boolean  newValue) {
    selected = newValue;
  }

   public  String getText() {
     return  text;
  }

   public   void  setText(String newValue) {
    text = newValue;
  }

   public  String toString() {
    //return getClass().getName() + "[" + text + "/" + selected + "]";
       return  getClass().getName() + text + "/" + selected;
  }
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
tree.addTreeSelectionListener( new  TreeSelectionListener()
                        {
                             public   void  valueChanged(TreeSelectionEvent event)
                            {

//  Как здесь фиксировать изменения в дереве.
// Т.е. стоит галочка или нет?
                            }
                        });
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33475641
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Обратите внимание, на вопрос, пожалуйста.
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33475721
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код дерева:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
public class CheckBoxTree extends JTree {


    public CheckBoxTree() {
        super();
        init();
    }

    public CheckBoxTree(TreeModel newModel) {
        super(newModel);
        init();
    }

    private void init() {
        setCellRenderer(new CheckBoxRenderer());
        addMouseListener(new MyMouseAdapter());
    }

    private DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();

    class CheckBoxRenderer extends JCheckBox implements TreeCellRenderer {
        public CheckBoxRenderer() {
            setOpaque(false);
        }


        public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
            if (!(value instanceof SelectableItem)) {
                return renderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
            }
            SelectableItem data = (SelectableItem) value;
            setSelected(data.isSelected());
            setText(data.getName());
            return this;
        }
    }

    class MyMouseAdapter extends MouseAdapter {
        public void mousePressed(MouseEvent e) {
            TreePath path = getPathForLocation(e.getX(), e.getY());
            //TreePath path = getClosestPathForLocation(e.getX(), e.getY());
            if (path == null) {
                return;
            }
            Object data = path.getLastPathComponent();
            if (data instanceof SelectableTopicItemData) {
                TreeModel model = getModel();
                SelectableItem selectable = (SelectableItem) data;
                if (model instanceof MenuListModel) {
                    MenuListModel mod = (MenuListModel) model;
                    mod.setSelected(selectable, !selectable.isSelected());

                }
                repaint();
            }
        }
    }
}

в код модели (MenuListModel implements TreeModel) нужно добавить метод
setSelected() и getSelectedItems():
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    public void setSelected(SelectableItem data, boolean selected) {
           data.setSelected(selected);
           //дополнительные действия
    }
    public List getSelected() {
           //к примеру, элементы хранятся в списке items;
           List res = new ArrayList();
           for (Iterator it = items.iterator(); it.hasNext();) {
                    if (data instanceof SelectableItem && ((SelectableItem)data).isSelected()) {
                        res.add(((SelectableItem)data).getItem());
                        //добавляем к результату нужный объект, а не обертку!!!
                    }
           }
           return res;
    }

код интерфейса объектов, которые следует хранить в дереве:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class SelectableItem {
    private boolean selected = false;
    private Object item = null;

    public SelectableTopicItemData(Object data) {
        item = data;
    }


    public boolean isSelected() {
        return selected;
    }

    public void setSelected(boolean selected) {
        this.selected = selected;
    }

    public String toString() {
        return item.toString();
    }


    public Object getItem() {
        return item;
    }
}


как использовать: создаете модель, дерево, добавляете элементы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        MenuListModel menuListModel = new MenuListModel();
        CheckBoxTree topics = new CheckBoxTree();
        topics.setModel(menuListModel);
        Person person = new Person();
        SelectableItem item1 = new SelectableItem(person);
        menuListModel.add(item1);
        ...
        List items = menuListModel.getSelectedItems();

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33476094
Gluk'Oza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Deady за помощь.

MenuListModel implements TreeModel - класс со стандартным набором методов?
...
Рейтинг: 0 / 0
JTree -> CheckBox
    #33476161
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk'Oza
> Спасибо Deady за помощь.

> MenuListModel implements TreeModel - класс со стандартным набором методов?Тема==Ответить




да. можно попробовать прикрутить DefaultMutableTreeModel, хотя я
им не пользуюсь.

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JTree -> CheckBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]