[英]Java - How do I prevent BorderLayout EAST from hugging the side of the screen?
如果我在东方或西方添加像JButton
的组件,我该如何阻止它在屏幕的一侧? 我想在JButton
和屏幕边缘之间JButton
一些空间。
在JButton上调用setBorder
,如下所示:
setBorder( new EmptyBorder( 3, 3, 3, 3 ) )
从JavaDoc开始,EmptyBorder是一个“透明边框,占用空间但没有绘图”。 在我的例子中,它应分别为顶部,左侧,底部和右侧3个像素。
完整代码,其目的仅是展示如何使用EmptyBorder:
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.border.EmptyBorder;
public class ALineBorder {
public static void main(String args[]) {
JFrame frame = new JFrame("Line Borders");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button1 = new JButton("Button1");
button1.setBorder( new EmptyBorder( 8, 8, 8, 8 ) );
JButton button2 = new JButton("Button2");
JButton button3 = new JButton("Button3");
button3.setBorder( new EmptyBorder( 16, 16, 16, 16 ) );
Container contentPane = frame.getContentPane();
contentPane.add(button1, BorderLayout.WEST);
contentPane.add(button2, BorderLayout.CENTER);
contentPane.add(button3, BorderLayout.EAST);
frame.pack();
frame.setSize(300, frame.getHeight());
frame.setVisible(true);
}
}
很可能你在容器中有(或很快就会有)多个按钮,并希望水平对齐它们。 因此,请考虑将按钮放在带有GridBagLayout
的嵌套JPanel
:
class ButtonPanel extends JPanel {
ButtonPanel() {
setLayout(new GridBagLayout());
}
@Override
public Component add(Component button) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridy = nextGridY++;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(3, 3, 3, 3);
super.add(button, gbc);
return button;
}
int nextGridY;
}
然后将此面板添加到父框架或面板(使用BorderLayout
。)
BorderLayout正如名字所说的边界。 然而,您可以将内容嵌入其中,因此您可以插入带边框的JPanel,然后将按钮放入其中。
您可能还想在Netbeans中试验GUI设计器。 这真的很不错,并为你通常想做的事情提供了很多帮助(比如边界边缘等等)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.