问题很简单。我意识到如果我允许将组件添加到JPanel中,我的代码可以稍微清理一下:
//north panel
JPanel northPanel = new JPanel(new GridLayout(0,3));
btnAdd = new JButton("Add");
btnEdit = new JButton("Edit");
btnDelete = new JButton("Delete");
northPanel.add(btnAdd, btnEdit, btnDelete);
而不是像这样:
//north panel
JPanel northPanel = new JPanel(new GridLayout(0,3));
btnAdd = new JButton("Add");
btnEdit = new JButton("Edit");
btnDelete = new JButton("Delete");
northPanel.add(btnAdd);
northPanel.add(btnEdit);
northPanel.add(btnDelete);
有办法吗?我已经浏览了SO和互联网,包括Oracle的文档,我知道这不是为这种特定语法构建的.add()方法,但我想知道是否还有其他具有此功能的方法。
良好的解决方案:
谢谢大家的反馈。如果以我描述的方式完成,单个语句实际上会更复杂,这是有道理的。 L. Mehmeti建议将组件存储在一个数组中并创建一个方法,该方法可以添加数组中的所有组件,完全符合这个问题。通过这种方式,当有很多组件时, order 很容易跟踪,而不必搜索一堆独立的构造函数并添加语句。
答案 0 :(得分:0)
您可以创建一个方法并在init方法中调用它。
public void addComponentsJ()
{
northPanel.add(btnAdd);
northPanel.add(btnEdit);
northPanel.add(btnDelete);
}
这将允许您使用
addComponentsJ()// to add all the components..
但是,这与您正在做的事情相同...只是将add方法调用重定位到另一个方法。 从而允许你“将它们全部添加到一个声明中” Swing不支持在一个语句中添加组件...唯一的方法是将调用重定位到另一个方法。
答案 1 :(得分:0)
我很抱歉,但我想没有办法做到这一点。我认为唯一的方法是编写自己的方法。例如:
public static void main(String[] args) {
Example main = new Example("Example");
}
public Example(String title) {
super(title);
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
JComponent[] components = new JComponent[3];
components[0] = new JLabel("Hello!");
components[1] = new JLabel("How are you?");
components[2] = new JLabel("I am fine. Thanks");
addComponents(panel, components);
add(panel);
setVisible(true);
}
public void addComponents(JComponent target, JComponent[] components) {
for(JComponent component : components) {
target.add(component);
}
}
希望我能提供帮助。