【问题标题】:JFrame in a Java desktop applicationJava 桌面应用程序中的 JFrame
【发布时间】:2009-12-20 12:10:34
【问题描述】:

我正在开发一个桌面 Java 应用程序,其 GUI 通过Swing 实现。我制作了一个 JFrame,并在其上添加了三个按钮 - 添加、编辑、删除。

现在我希望每当用户点击任何按钮时,该按钮的特定内容都会出现在这三个按钮之外。

那么如何实现呢?我是否需要在这三个按钮之外添加一个 JPanel,然后将特定于该按钮的内容添加到该 JPanel 中?

到目前为止,我已经使用了一个 JFrame 并在其上添加了 3 个按钮。就是这样。

对于添加按钮,我想添加一些按钮和文本字段来向数据库添加信息。

对于“删除”按钮,我想添加一些按钮,以便根据用户在单击“删除”按钮时出现的文本字段中输入的信息在数据库中查找记录。

编辑按钮的类似内容类型。

【问题讨论】:

  • 你能发布你目前所拥有的代码(如果需要的话可以简化)?
  • 什么是“内容”?一个字符串?更多控制?更多细节会有所帮助。

标签: java user-interface swing


【解决方案1】:

那么如何实现呢。我是否需要在这三个按钮之外添加一个 JPanel,然后将特定于该按钮的内容添加到该 JPane

这样就好了。当您按下按钮时,您可以调用JPanel.removeAll() 来移除当前在控件中的所有控件,然后重新进行布局,具体到您按下的任何按钮。

如果您有自定义摆动控件,只需使用 BorderLayout 将自定义控件添加到 JPanel 并放在中心。

另一种选择是使用CardLayout,并在用户按下其中一个按钮时在卡片之间翻转。如果按钮的布局永远不会改变,那可能是一个更好的方法。显然,如果在按钮按下之间内容发生变化,则每次都需要重做布局。

【讨论】:

    【解决方案2】:

    Chad'sAlex's 的答案都可以。您可能需要在已更改的面板上调用 revalidate()repaint() 的组合,因为过去我注意到 Swing 并不总是喜欢更换面板。

    另外,您是否考虑过使用 JTabbedPane 而不是手动编码与添加/编辑/删除按钮的交互?

    【讨论】:

    • CardLayout 是正确的答案 - 如果您选择此选项,则不需要 revalidate()s 或 repaint()s。
    • 在 CardLayout 中,您不是总是在卡片之间“滑动”而不是通过 ID 引用它们吗?在这种情况下,只有 3 张牌可能是最好的,但如果你有 10 或 20 张可以快速浏览呢?也许不是一般的案例解决方案。
    • 抱歉,请正确阅读 CardLayout API - 约束对象可用于“快速随机访问”。所以,是的,我猜 CardLayout 赢了。
    【解决方案3】:

    我没有做过很多 Java 编程,但我认为使用 2-3 种不同的 JPanel,并根据单击的按钮显示你需要的那个就可以了。

    我不确定这是否是正确的方法。

    【讨论】:

      【解决方案4】:

      我使用 JFrame 来添加所有按钮并为新窗口创建一个新的 JFrame 并隐藏前一个。 gven方式更好。我现在就这么做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 2011-02-15
        相关资源
        最近更新 更多