【问题标题】:Java GUI: Document Object ModelJava GUI:文档对象模型
【发布时间】:2012-05-11 06:22:00
【问题描述】:

HTML 有一个文档对象模型,然后 Javascript 可以对其进行操作/移动。

当我在 Swing 中创建 GUI 时,模型看起来非常不同(我不知道模型的名称),因为我正在创建布局管理器,并将对象粘贴在其中。

我的问题:有没有办法以类似 DOM 的方式操作 Java GUI?

[例如,我希望能够删除/添加节点、移动子节点等...]

谢谢!

【问题讨论】:

  • 你的意思是像遍历组件的层次结构?
  • 你会感到非常失望和沮丧。 Swing 中的一切都比您在 Javascript 中习惯的要困难得多。您还会发现没有事件捕获/冒泡 - 它仅被分派给直接附加到事件源的侦听器。
  • "(HTML) ..不知道模型的名称"HTMLDocument
  • this.add() 和在javascript中添加节点不一样吗?
  • @Marko:大声笑,这就是我的想法。大约两天前,我创建了一个基本的 JFrame,获得了它的 Graphics2D 环境,并开始向它绘制东西——但我希望其他人已经解决了这个问题。 :-)

标签: java swing dom defaultstyleddocument


【解决方案1】:

对于 Swing 组件,一切都从一组 JFrame 开始(您也可以有 JWindow 和 JDialog,但通常至少有一个根框架)。很可能,您只关心该 JFrame 的 contentPane(但您也可以关心它所拥有的 Windows 等...)。

所以从 JFrame 中,您可以得到如下内容窗格:

Container contentPane = frame.getContentPane();

从那里,您可以开始沿着组件树向下走,使用:

Component[] children = contentPane.getComponents();

从一个孩子,你可以得到它的父母:

Container parent = child.getParent();

将组件添加到容器中:

container.add(someComponent);
container.validate();

从容器中移除组件:

container.remove(someComponent);
container.validate();

要将组件从一个容器移动到另一个容器,只需将其从一个容器中移除并添加到另一个容器。

我不确定这是否能回答您的问题。如果您可以发布您正在尝试做的事情的真实示例,那就更容易了。

【讨论】:

  • 我建议不要使用 revalidate() + repaint(),在所有情况下,肯定可以讨论 JComponent 需要什么以及为什么不这样做,只是为了避免使用 revalidate() + repaint( ) +1
  • 您可以使用Ctrl+Shift+F1 获取列表,就像他们显示here 一样。
【解决方案2】:

我不确定这是否解决了您的问题,但有XML-driven Java UI toolkits

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2013-10-14
    相关资源
    最近更新 更多