我正在使用BorderLayout
作为框架(第一个“抓住了我的注意力”)和FlowLayout
作为标签(我发现适合我做的那个) ,结果显示如下:
我的目标是将“2 * 1”稍稍向下推,使其“居中”。
我环顾四周,发现很多人都说使用空布局,但后来说它不是最好的选择(即使我的窗口不可调整大小),而我发现的另一个解决方案是使用布局组合(除非我误解了)。
问题是最重要的问题,如果不是,那么什么是最好的选择呢? (以下是制作此窗口的代码(减去变量和其他方法,以简化可视化)。
public Frame() {
super("Jogo de Multiplicar!");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setSize(300, 200);
setResizable(false);
getContentPane().setBackground(pink);
mensagem = new TransparentPanel();
operacao = new TransparentPanel();
//added stuff in mensagem and operacao
add(operacao);
add(mensagem, BorderLayout.SOUTH);
}
答案 0 :(得分:3)
我环顾四周,发现很多人都说使用空布局
避免这个建议。每当我在论坛中看到该建议时,通常会在论坛中向更有经验的用户投票。
我的目标是推动" 2 * 1"一点点,以及#34;中心"它
如果您只想在顶部留出更多空间,那么您可以使用Border
:
operacao.setBorder(new EmptyBorder(...));
阅读How to Use Borders上Swing教程中的部分以获取更多信息。
如果您想要实际居中,可以使用BoxLayout
:
Box box = Box.createVerticalBox();
box.add( Box.createVerticalGlue() );
box.add( topPanel );
box.add( Box.createVerticalGlue() );
box.add( bottomPanel );
本教程还有一个关于How to Use BoxLayout
的部分。搜索目录。
答案 1 :(得分:2)
您可以使用MigLayout
作为唯一的LayoutManager。它非常强大,并且通常提供其他经理所做的一切。
使用它可以非常简单地将组件集中在一起:
public class MultiplyExample extends JFrame{
private static final long serialVersionUID = 1L;
JLabel testLabel = new JLabel("2*2 = 4");
public MultiplyExample(){
super("Example");
setBounds(300, 50, 200, 200);
// Set the MigLayout, so that columns and then rows get centered
setLayout(new MigLayout("center, center"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(testLabel);
}
public static void main(String[] args) {
JFrame testFrame = new MultiplyExample();
testFrame.setVisible(true);
}
}
结果:
以下是MigLayout
提供的演示:
http://www.miglayout.com/swingdemoapp.jnlp
以下是快速入门指南:
http://www.miglayout.com/QuickStart.pdf
如果您 使用BorderLayout
,您可以将您的组件放到另一个面板上,并使用BorderLayout.CENTER
将其放入中心:
pane.add(button, BorderLayout.CENTER);