【问题标题】:Netbeanw does not refresh JPanel after adding new components添加新组件后 Netbeanw 不刷新 JPanel
【发布时间】:2010-02-24 07:18:38
【问题描述】:

这个标题可能不能最好地描述我的问题。我正在使用 Netbean GUI builder 创建一个 JFrame 和几个 JPanel。我在单独的类中创建每个 JPanel,然后将 JPanel 类拖到 JFrame。问题是在将JPanel拖到JFrame后,如果我将组件添加到JPanel,它不会显示JFrame中包含的JPanel中的附加组件。我尝试“清理并构建”,但新组件仍未显示在 JFrame -> JPanel 中。

【问题讨论】:

    标签: java user-interface swing netbeans builder


    【解决方案1】:

    Matisse 保留您添加到调色板的任何组件的缓存副本。因此,不会自动获取后续更改。要获取更改:

    • 保存并关闭您的 JFrame 源代码
    • 确保 JPanel 组件已编译。
    • 点击Tools > Palette > Swing/AWT Components
    • 右键单击树并选择Refresh
    • 打开您的 JFrame 组件。它现在应该显示更新的组件

    【讨论】:

    • 很遗憾,这种方法在我的 NB6.8 (Mac) 上不起作用……你用哪个 NB 测试过这种方法?谢谢!
    • NB6.8 在 Windows XP 上。但是,它在 Ubuntu 上也适用于我。请务必执行完整的构建,否则您可能会在 build/classes 中使用一个 .class 文件,而在 jar 中使用不同的文件。马蒂斯总是使用罐子里的那个。即使 build/classes 中的那个更新。
    【解决方案2】:

    我知道你的意思; Matisse(NetBeans 的 GUI 编辑器)允许您将自组装的容器(例如 JPanels)拖放到其他容器(例如 JFrames)中,但前者的任何后续更改都不会反映在后者中。据我所知,不幸的是,这就是它的工作方式。

    这是我认为 Matisse 只能用于快速原型制作和玩弄的原因之一。对于任何严重的事情,GUI 必须是手动编码的。

    【讨论】:

      【解决方案3】:

      遇到同样的问题,你所要做的就是:

      1) 重新编译新的 JPanel 子组件
      2) 关闭与父 JPanel 关联的表单
      3) 从项目树中再次重新打开父 Jpanel

      现在应该显示刷新的子面板。 Matisse 仅在您打开表单或添加新子面板时呈现子面板。因此,在不删除和重新添加子面板的情况下刷新显示的唯一方法是关闭并重新打开它。

      【讨论】:

        猜你喜欢
        • 2019-06-08
        • 1970-01-01
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        • 2020-06-09
        • 2021-01-02
        相关资源
        最近更新 更多