java - 将 Swing 组件添加到容器的标准方法?

标签 java swing components containers standards

我四处寻找,但无法真正切中要害地回答这个问题。

我不确定我目前在 UI 中添加大量组件的策略是否会被其他程序员乍一看完全理解。我做了很多 Swing 工作(主要是为了我的个人应用程序),所以当然我的流程是我习惯的。

本质上,我喜欢创建所有组件(可能不按顺序,有时我的想法从一开始就不是100%线性和正确的)。我可能会也可能不会回去好好订购它们。

但是,我确实确保按照有点让人想起网页的顺序添加它们。几乎总是在创建它们的方法的末尾。

在 Swing 中是否有向容器添加组件的标准方法?我见过人们在代码中看似随意地添加组件,如果我需要调整某个组件,有时很难找到。我尝试将该部分集中起来,并以合理的方式将它们添加到容器中。

示例:

public void populateMyPanel()
{
    // Create all components
    JPanel wrapperPanel new JPanel(new BorderLayout());

    JPanel panelWest = new JPanel(new FlowLayout());
    JLabel labelOne = new JLabel("Label #1");
    JButton buttonOne = new JButton("Button #1");

    JPanel panelCenter = new JPanel(new FlowLayout());
    JButton buttonTwo = new JButton("Button #2");

    JPanel panelEast = new JPanel(new FlowLayout());
    JTextField myTextField = new JTextField();
    JButton buttonThree = new JButton("Button #3");

    // Now add them in a top-to-bottom & left-to-right order
    wrapperPanel.add(panelWest, BorderLayout.WEST);
      panelWest.add(labelOne);
      panelWest.add(buttonOne);

    wrapperPanel.add(panelCenter, BorderLayout.CENTER);
      panelCenter.add(buttonTwo);

    wrapperPanel.add(panelEast, BorderLayout.EAST);
      panelEast.add(myTextField);
      panelEast.add(buttonThree);
}

最佳答案

首先,请遵循最小惊讶原则:如果您正在与其他人合作,并且他们已经建立了约定,请使用他们的约定。我见过有人编写的代码与您给出的示例非常相似。我见过其他人声明但没有初始化对象到类的顶部,然后稍后在一种方法中初始化它们,并将它们添加到另一种方法中的面板中。可能有三打其他方法可以做同样的事情,并且每种方法都有一个有效的论据。

也就是说,通过选择最适合该工作的布局管理器,可以减轻布局对象的大部分麻烦。自从我尝试的第一个项目从中受益匪浅以来,我一直强烈偏向于使用 MigLayout ( http://www.miglayout.com/ ),但我承认对于简单的情况来说它可能有点矫枉过正。看一下他们的快速入门指南和 Swing 演示(展示了它的功能和实现它的代码),看看它对您是否有意义。

关于java - 将 Swing 组件添加到容器的标准方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856300/

相关文章:

java - 从 spring 属性加载 SQL 不运行

java - 自动调整按钮宽度

vb.net - 工具提示控件如何通过新属性增强表单上的所有控件?

objective-c - 在 Objective-C 中使用 GUI 进行日志记录

java - 如何让 Java 方法返回任何类型的通用列表?

Java非贪婪(?)正则表达式来匹配字符串

java - 是否可以使用java中的FileNameFilter接口(interface)按大小过滤文件

java - 组件和轻量级/重量级的区别

java - Java GUI 中的图片更改

javascript - 未捕获的 TypeError : this. context.router.push 不是函数