嘿大家。我正在尝试制作一个带有按钮和标签的摇摆 GUI。我使用边框布局,标签(在北场)显示得很好,但按钮占据了框架的其余部分(它在中心场)。知道如何解决这个问题吗?
Michael Hoyle
问问题
25609 次
3 回答
13
您必须将按钮添加到另一个面板,然后将该面板添加到框架中。
事实证明 BorderLayout 扩展了中间的组件
您的代码现在应该如下所示:
前
public static void main( String [] args ) {
JLabel label = new JLabel("Some info");
JButton button = new JButton("Ok");
JFrame frame = ...
frame.add( label, BorderLayout.NORTH );
frame.add( button , BorderLayout.CENTER );
....
}
把它改成这样:
public static void main( String [] args ) {
JLabel label = new JLabel("Some info");
JButton button = new JButton("Ok");
JPanel panel = new JPanel();
panel.add( button );
JFrame frame = ...
frame.add( label, BorderLayout.NORTH );
frame.add( panel , BorderLayout.CENTER);
....
}
之前/之后
之前 http://img372.imageshack.us/img372/2860/beforedl1.png 之后 http://img508.imageshack.us/img508/341/aftergq7.png
于 2008-11-22T23:05:57.590 回答
3
或者只使用绝对布局。它在布局托盘上。
或启用它:
frame = new JFrame();
... //your code here
// to set absolute layout.
frame.getContentPane().setLayout(null);
这样,您可以自由地将控件放置在您喜欢的任何位置。
于 2013-03-12T21:37:31.927 回答
0
再次 :)
import javax.swing.*;
public class TestFrame extends JFrame {
public TestFrame() {
JLabel label = new JLabel("Some info");
JButton button = new JButton("Ok");
Box b = new Box(BoxLayout.Y_AXIS);
b.add(label);
b.add(button);
getContentPane().add(b);
}
public static void main(String[] args) {
JFrame f = new TestFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
于 2008-11-25T15:16:31.607 回答