【问题标题】:How to link JLabel and JSpinner for resizing如何链接 JLabel 和 JSpinner 以调整大小
【发布时间】:2013-10-11 08:27:47
【问题描述】:

我想要一个可调整大小的应用程序,并且我正在构建一个嵌套面板 GUI。在一个面板中,我需要 Spinners 和 Labels。我想要 Spinner 左侧的标签。在考虑调整大小问题时,实现此目的的最佳方法是什么:

1.我可以创建一个垂直的 BoxLayout 面板,并添加 x 个子面板,其中每个子面板是 包含一个标签和一个微调器:

JPanel ControlPanel = new JPanel();
ControlPanel.setLayout(new BoxLayout(ControlPanel, BoxLayout.Y_AXIS));
JPanel LabelledSpinner = new JPanel();
LabelledSpinner .setLayout(new BoxLayout(LabelledSpinner , BoxLayout.X_AXIS));
JLabel lab1 = new JLabel("Label1");
JSpinner spin1 = new JSpinner();
spin1.setModel(new SpinnerNumberModel(300, 10, 3000, 10));
LabelledSpinner .add(lab1);
LabelledSpinner .add(spin1);
ControlPanel.add(LabelledSpinner );

或

2.我可以创建一个 2 列 x 行的 GridBagLayout 面板。然后每一行都会有一个标签,然后是一个微调器。

哪个最好?

或者这个“常见”的标签问题有更简单的解决方案吗?

【问题讨论】:

  • 对我来说,'GridBagLayout Panel with 2 columns and x rows'更好
  • 无关:请学习java命名约定并遵守它们。
  • 嵌套的痛苦或自己造成的 :-) 或者换句话说:根本不要使用嵌套面板,而是使用一个体面的 LayoutManager,它足够强大,可以轻松配置一个包含所有面板的面板。我个人最喜欢的是 MigLayout。
  • 另见相关example。

标签: java swing jframe


【解决方案1】:
  1. 使用布局管理器方法肯定更好。

  2. 有一个 JDK Swing 教程讨论了如何使用 SprintLayoutManager 构建类似布局的表单 http://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html

从标准布局管理器开始。当您使用不同的布局管理器时,您最终会想出一个最适合您要求的组合。

另一种选择是使用 GroupLayout,它可以帮助向表单 UI 添加稍微复杂的组件。 http://docs.oracle.com/javase/tutorial/uiswing/layout/groupExample.html

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 2023-04-01
    • 2021-07-20
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多