У меня есть JTree
и хотел бы, чтобы его метод getTreeCellEditorComponent()
вызывался при однократном щелчке по узлу. Согласно документации для класса DefaultTreeCellEditor
(который я продлил), «Редактирование начинается с тройного щелчка мыши или после щелчка, паузы, щелчка и задержки в 1200 миллисекунд». Есть ли способ переопределить это поведение, чтобы один клик мог начать процесс редактирования?Как отредактировать узел JTree одним щелчком мыши
ответ
API рекомендует MouseListener
, но привязка ключей также удобна. Этот пример вызывает startEditingAtPath()
и связывается Введите ключ:
final JTree tree = new JTree();
tree.setEditable(true);
MouseListener ml = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row = tree.getRowForLocation(e.getX(), e.getY());
TreePath path = tree.getPathForLocation(e.getX(), e.getY());
if (row != -1) {
if (e.getClickCount() == 1) {
tree.startEditingAtPath(path);
}
}
}
};
tree.addMouseListener(ml);
tree.getInputMap().put(
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "startEditing");
Приложения: Смотрите также эту answer относительно практичности.
Технически, вы можете создать подкласс DefaultTreeCellEditor и щипает его логику, чтобы начать редактирование на первом одним нажатием кнопки:
JTree tree = new JTree();
tree.setEditable(true);
TreeCellEditor editor =
new DefaultTreeCellEditor(tree, (DefaultTreeCellRenderer) tree.getCellRenderer()) {
@Override
protected boolean canEditImmediately(EventObject event) {
if((event instanceof MouseEvent) &&
SwingUtilities.isLeftMouseButton((MouseEvent)event)) {
MouseEvent me = (MouseEvent)event;
return ((me.getClickCount() >= 1) &&
inHitRegion(me.getX(), me.getY()));
}
return (event == null);
}
};
tree.setCellEditor(editor);
Там это удобство причуда, хотя, как теперь вы не можете выбрать без запуска правку - который может быть или не быть вашим намерением.
, возможно, не [см. сообщение от @Michael Dunn] (http://www.coderanch.com/t/584508/GUI/java/change-DefaultCellEditor-setClickCountToStart-int-DefaultTreeCellEditor) – mKorbel
@mKorbel Мне немного надоело обходить редактор api и вручную запускать редактирование. Во всяком случае, строка _is выбрана только для нее, она немного необычна, что не может быть выбрана без редактирования. – kleopatra
вопрос такой, как есть, я сомневаюсь, что ваш хороший sugestion с четкой концепцией будет принят ... – mKorbel
- 1. ClearInterval одним щелчком мыши
- 2. Как расширить узел Fancytree одним щелчком мыши и отредактировать его название с помощью двойного щелчка
- 3. Как проверить, какой JTree выбран в событии с щелчком мыши?
- 4. Получить слово одним щелчком мыши
- 5. Execute TemplateUrl одним щелчком мыши
- 6. Создание платежа одним щелчком мыши
- 7. Обновление записи одним щелчком мыши
- 8. Репопуляция объектов одним щелчком мыши
- 9. вызов двойного щелчка мыши одним щелчком мыши
- 10. Перемещение DIVs одним щелчком мыши?
- 11. Выполнять кнопки одним щелчком мыши
- 12. Загрузите div одним щелчком мыши
- 13. Pygame кнопка мыши работает одним щелчком мыши
- 14. Цифровые приложения с одним щелчком мыши
- 15. как выбрать два переключателя одним щелчком мыши?
- 16. Как выбрать строку QTableView одним щелчком мыши
- 17. Как выполнить два действия одним щелчком мыши?
- 18. Как открыть comboBoxColumn с одним щелчком мыши
- 19. Как изменить заголовки темы одним щелчком мыши?
- 20. Как изменить цвет контура одним щелчком мыши
- 21. Как сделать работу ZeroClipboard одним щелчком мыши?
- 22. Как открыть новое окно одним щелчком мыши?
- 23. D3: Простое взаимодействие - Круг одним щелчком мыши
- 24. Открыть несколько ссылок одним щелчком мыши
- 25. Установите две настройки одним щелчком мыши
- 26. 2 якоря с одним щелчком мыши
- 27. Проверка нескольких HTML-страниц одним щелчком мыши
- 28. Запуск видеозахвата одним щелчком мыши в android
- 29. Отправить две формы одним щелчком мыши
- 30. Пожар нескольких кнопок вспышки одним щелчком мыши
hmm ... вы можете повторно рассмотреть удобство использования одного щелчка: это триггер для un/selection – kleopatra