Java-如何防止BorderLayout EAST占据屏幕的一侧?
如果我在东侧或西侧添加像Java-如何防止BorderLayout EAST占据屏幕的一侧?,java,swing,Java,Swing,如果我在东侧或西侧添加像JButtons这样的组件,如何防止它紧贴屏幕一侧?我想在JButtons和屏幕边缘之间留出一些空间。在JButton上调用setboorder,如下所示: setBorder( new EmptyBorder( 3, 3, 3, 3 ) ) 在JavaDoc中,EmptyBorder是“占用空间但不绘制的透明边框”。在我的示例中,它将分别取3个像素,分别为顶部、左侧、底部和右侧 完整的代码,其目的只是演示如何使用EmptyOrder: import java.awt.
JButton
s这样的组件,如何防止它紧贴屏幕一侧?我想在JButton
s和屏幕边缘之间留出一些空间。在JButton上调用setboorder
,如下所示:
setBorder( new EmptyBorder( 3, 3, 3, 3 ) )
在JavaDoc中,EmptyBorder是“占用空间但不绘制的透明边框”。在我的示例中,它将分别取3个像素,分别为顶部、左侧、底部和右侧
完整的代码,其目的只是演示如何使用EmptyOrder:
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);
}
}
很可能容器中有(或很快会有)多个按钮,并且希望将它们水平对齐。因此,考虑将按钮嵌入到嵌套的<代码> jPoCTs/COD>中,使用<代码> GridBagLayout < /代码>:
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;
}
然后将此面板添加到父框架或面板(使用
边框布局)边框布局与边框的名称一致。不过,您可以将东西嵌套在其中,这样您就可以插入一个带有边框的JPanel,然后将按钮放入其中
您可能还想在Netbeans中试用GUI设计器。这真的很不错,对你通常想做的事情(比如在边框上留一个边距等)提供了很多帮助。+1:setBorder
是正确的方法,但是将它设置在你的JPanel
上。否则你必须为每个按钮设置if。是的。。。在我添加的示例中,我在两个按钮上放置了不同的边框,只是为了显示行为。但是Peter是对的。在按钮上显式设置空白边框也会改变按钮的大小和内部布局(至少在系统和金属外观的Vista上是这样)。一定要将其设置在包含面板上。