我是Java的GUIS的新手,我正在尝试创建一个类似我附加的图像的GUI,但是有多个JLabel和JTextFields。我想将按钮放在屏幕底部的中央。
我该怎么做呢?请忽略黑线,因为我找不到更好的图像。
答案 0 :(得分:6)
您可以通过多种方式实现这一目标。对我来说,最简单的方法是使用GridBagLayout
,它是所有内置布局管理器中最灵活的,它也是最复杂的一个:P
很多人都抓住了一件事,就是尝试在一个容器上布局组件。这可以做到,但需要花费大量时间和调整才能做到正确。
更好的方法(恕我直言)是使用多个子容器。
这使您可以根据个人需求细分布局要求,并担心这些容器之间的关系是一个单独的问题。
例如,在您的问题中,您要求将单词和文本字段对齐在一起,但是它们被锚定到容器的北部位置,而按钮应该在南部,但是在标签之间居中和田野。
首先考虑如何布局标签和字段,然后担心这些按钮与字段/标签之间的关系......
public class TestLayout08 {
public static void main(String[] args) {
new TestLayout08();
}
public TestLayout08() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new LayoutPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class LayoutPane extends JPanel {
public LayoutPane() {
JButton button = new JButton("Find Word");
JLabel label = new JLabel("Word:");
JTextField field = new JTextField(12);
setLayout(new GridBagLayout());
JPanel fieldPane = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets = new Insets(2, 2, 2, 2);
fieldPane.add(label, gbc);
gbc.gridx++;
fieldPane.add(field, gbc);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTH;
gbc.weighty = 1;
add(fieldPane, gbc);
gbc.gridx = 0;
gbc.gridy++;
gbc.weighty = 0;
gbc.anchor = GridBagConstraints.CENTER;
add(button, gbc);
}
}
}
看看;
答案 1 :(得分:2)
您至少有两个选择;
答案 2 :(得分:1)
如果您更喜欢使用Eclipse,那么有一个名为WindowsBuilder Pro的插件,您实际上可以直接在Eclipse中安装该插件。 https://developers.google.com/java-dev-tools/wbpro/
答案 3 :(得分:0)
尝试使用Netbeans。您可以拖放所有这些功能,然后您只需要编写按钮功能的代码。这些课程也是为你创造的。
或者,我从一开始就学习如何从头开始构建它,认为它是一个非常基本的GUI。