问题标签 [jtree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
119 浏览

java - 可能有多个顶级 TreeNode?

第一次使用JTree。只是想知道是否有可能拥有多个顶级 TreeNodes?谢谢

0 投票
3 回答
5274 浏览

java - 使用 JCheckBox 帮助制作 JTree

我有一个不寻常的情况,我需要一个 JTree,每个节点包含 2 个复选框和一个标签(能够添加一个侦听器来告知何时选中任何潜在的复选框)。我还需要根节点具有相同的布局(我假设这意味着创建一个带有 2 个 JCheckBoxes 和一个 JLabel 的 JPanel),如果选中了根中的一个复选框,则能够选择树下的所有复选框。

有什么指导或例子吗?我已经在这里查看了以前的问题和相关示例......其中一些让我能够达到让树“看起来”的目的,但没有给我一个实施它背后的动作的方向。

谢谢!

0 投票
5 回答
5839 浏览

java - JTree 实时更新?

我正在寻找一种线程解决方案来每秒更新我的 JTree。

基本上,我...

  • 导入外部文件
  • 从中创建一个枚举
  • 从枚举中构建树

外部文件可以随机变化,树中的数据需要以某种合理的时间方式表示这种变化。我如何能够在不重新绘制 JTree(通过面板)所在的整个内容窗格的情况下重新绘制树?

谢谢!

0 投票
2 回答
1316 浏览

java - Swing:自定义组件上的侦听器执行顺序

我的自定义组件由JTreea 内的三个 s组成JPanel。一次JTree只能选择一个,因此我TreeSelectionListener为每个调用clearSelection先前选择的JTree.

我想将其他TreeSelectionListeners 添加到JTrees 以确保选择处理侦听器始终首先执行。我不想把所有东西都放在一个单一的TreeSelectionListener.

我该怎么办?提前致谢!

0 投票
1 回答
379 浏览

java - Swing:如何忽略取消选择事件?

我的自定义组件由JTreea 内的三个 s组成JPanel。一次JTree只能选择一个,因此我TreeSelectionListener为每个调用clearSelection()先前选择的JTree. (有关更多详细信息,请参见此处)。

这很好用,但我需要防止s 在取消选择a时TreeSelectionListener触发。一种区分选择事件和取消选择事件的简单方法就足够了。JTree

提前致谢!

0 投票
3 回答
4707 浏览

java - MouseEvent 之前的 Java JTree valueChanged 事件

情况就是这样,我有一个带有选项卡式窗格的 jFrame,在选项卡中我有几个 jTables 和一个 jTree。我希望能够根据用户是否使用 ctrl/shift + 单击而不是常规单击来链接表和树之间的选择。(如果您按住 ctrl 并单击第一个表/树,它会添加到整体选择中,如果您使用常规单击它会清除其他表/树中的选择)。目前我遇到了 Java 的 jTree 组件的问题。我添加了一个 TreeSelectionListener 和一个 MouseListener 以及一个实现这两个接口的类,称之为 MyBigListener;IE

如果用户使用 ctrl/shift + 单击,我的计划是设置一个布尔标志,我可以在树选择侦听器实现的 valueChanged(TreeSelectionEvent e) 期间检查该标志。我希望能够在 valueChanged TreeSelectionEvents 之前处理鼠标事件,但问题是我在 valueChanged treeSelection 事件之后收到鼠标事件。这对我来说似乎很奇怪,我在鼠标按下事件触发之前收到了选择更改,而选择更改实际上是由按下鼠标发起的。(我已经同步了布尔标志设置,具有讽刺意味的是,这有助于突出事件的错误顺序。)

我已经尝试过诸如添加 keyListener 之类的替代方法,但是当焦点位于单独的帧上时这不起作用,当用户按住 ctrl 然后单击 jTree 导致它同时接收焦点和触发时,这会让我感到困惑任何 valueChanged 选择事件。

任何帮助将不胜感激,谢谢!

--编辑--@akf 我在一个选项卡式窗格中有单独的 jTables 和 jTrees,它们用作节点图中数据的摘要/控制面板。我在选项卡式窗格中使用这些组件对显示在单独 jFrame 中的图形进行协调选择。与 jTree 一样,每个表都可以单独进行选择。窗格之间的协调很棘手。到目前为止,这适用于 jTable 组件,因为我触发了新的选择作为 MouseEvent 的结果,在那里我可以判断 shift/ctrl 按钮是否已按下,制定我的新选择,并将其传递给协调所有选择之间的父框架窗格并将最终选择发送到图表。但是,父级需要知道它是否需要在窗格之间链接选择,或者挤压其他窗格。有了 jTables 就又好了,因为单击鼠标会触发选择更改。jTree 是一个更大的问题,因为我正在做一些强制选择。如果您单击一个分支,它会强制所有叶子进入选择。我需要实现一个 TreeSelectionListener 来做到这一点,但只获得一个 valueChanged(TreeSelectionEvent) 来实现更改。我添加了一个 mouseListener 来监听 ctrl+clicks 和 shift+clicks,但显然事件并不总是以相同的顺序发生.. 至少到目前为止我在 mousePressed 事件之前收到 valueChanged 事件,所以检查是否是 ctrl +单击在选择已被修改后发生的帖子。我需要实现一个 TreeSelectionListener 来做到这一点,但只获得一个 valueChanged(TreeSelectionEvent) 来实现更改。我添加了一个 mouseListener 来监听 ctrl+clicks 和 shift+clicks,但显然事件并不总是以相同的顺序发生.. 至少到目前为止我在 mousePressed 事件之前收到 valueChanged 事件,所以检查是否是 ctrl +单击在选择已被修改后发生的帖子。我需要实现一个 TreeSelectionListener 来做到这一点,但只获得一个 valueChanged(TreeSelectionEvent) 来实现更改。我添加了一个 mouseListener 来监听 ctrl+clicks 和 shift+clicks,但显然事件并不总是以相同的顺序发生.. 至少到目前为止我在 mousePressed 事件之前收到 valueChanged 事件,所以检查是否是 ctrl +单击在选择已被修改后发生的帖子。

现在,我正在发布一个待定的选择更改,然后让 MouseListener 抓住它并将其发送到链上,但如果不能保证这些事件以相同的顺序发生,那么在某些时候它会失败。实施延迟器也会让我犯错。

感谢你目前的帮助。

--EDIT2-- @ykaganovich

我认为覆盖 fireValueChanged 方法更接近正确的处理方式。根据我对哪些操作应该导致对其他组件的“链接”选择的定义,我需要在 valuedChanged 方法触发之前收集一些关于正在发生的事情的上下文。这基本上意味着在所有情况下我都可以自己调用它,我可以通过谁触发它来定义它的含义。即,如果鼠标事件导致它并且 ctrl 关闭,则设置我需要设置的内容(解释)然后触发。如果由于键盘事件而发生变化,请再次设置我需要设置的内容,然后触发。我不认为 TreeSelectionModel 是要走的路,因为我仍然不知道事件触发时的情况。我认为这意味着我需要重写部分 jTree 来做到这一点,但我想我' 看看情况如何。谢谢。

0 投票
1 回答
642 浏览

java - Java 树节点详细信息

我已经使用 JTree 构建了一棵树,我想获取节点详细信息(就像它们出现在此处绘制的框架中一样)。

0 投票
4 回答
2986 浏览

java - 字符串变量到 DefaultMutableTreeNode 对象?

是否可以将 String 变量转换为 DefaultMutableTreeNode 对象?请解释。语境:

这是我写的代码。这在以 BreadthFirstSearch 方式遍历树的枚举中使用。2nf 行给了我这个错误:

0 投票
2 回答
6617 浏览

jtree - 为 Jtree 添加拖放支持

我想为我的 JTree 应用程序添加拖放支持

我创建了一个自定义 DefaultMutableTreeNode 子类

有一个默认的 TreeCellRenderer

我需要添加什么以及在哪里?

0 投票
5 回答
6961 浏览

java - 在 JTree 中排列节点

我有一个 JTree,用户可以在其中拖放或重新排列节点,保存后我必须重新排列节点,以便文件类型节点必须出现在文件夹类型节点之前。我不需要对文件/文件夹名称进行排序。

用户树:

结果树:

我在下面有以下代码,它有效,但我不知道这是正确的方法还是好的做法。您能否建议两种解决方案中的哪一种更好,或者您可以建议其他方式。

非常感谢你。

解决方案1:

解决方案2: