我试图将这两个开始和后退按钮居中,但是任何时候我尝试诸如BoxLayout
,.SetLocation
,{{ 1}},SwingConstant.CENTER
,.setVerticalAlignment
无效。谁能帮我设置两个中间按钮以及“ Snake”标题位于框架顶部中心的位置?谢谢。
.setHorizonatalAlignment
答案 0 :(得分:1)
快速浏览here。最适合您的应用的是BoxLayout或FlowLayout。
对于它们各自的使用领域,两者都是非常非常强大的工具。
除此之外,还尝试看一下Java的布局教程。您应该始终在Frames上使用“ getContentPane()”方法,并在“ ContentPane”中应用布局并将组件添加到其中!
答案 1 :(得分:1)
请记住,您不会陷入单一布局。实际上,找到一种(复杂的)布局解决方案可以通过单一布局解决的情况非常罕见。
例如,使用多种/复合布局...
这仅利用BorderLayout
来管理标题和按钮面板,而使用GridBagLayout
来管理按钮本身(默认情况下,它将使按钮在垂直和水平方向上居中)>
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setLayout(new BorderLayout());
JLabel title = new JLabel("Snake");
title.setHorizontalAlignment(JLabel.CENTER);
add(title, BorderLayout.NORTH);
JPanel buttonsPane = new JPanel(new GridBagLayout());
buttonsPane.setBorder(new EmptyBorder(50, 50, 50, 50));
buttonsPane.add(makeButton("Start"));
buttonsPane.add(makeButton("Back"));
add(buttonsPane);
}
protected JButton makeButton(String text) {
JButton btn = new JButton(text);
return btn;
}
}
}
答案 2 :(得分:0)
您可以按以下方式使用Everything within the curly braces ({...}) is processed by the formatter and replaced by its placeholder:
:
BorderLayout