gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:29:41 24 4
gpt4 key购买 nike

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

我不确定我目前在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com