Java - 如何防止BorderLayout EAST拥抱屏幕的一侧?

Shr*_*ers 13 java swing

如果我JButton在东侧或西侧添加s等组件,我该如何防止它在屏幕的一侧?我想JButton在屏幕边缘和屏幕边缘之间留出一些空间.

Syn*_*r0r 13

setBorder像这样打电话给你的JButton:

setBorder( new EmptyBorder( 3, 3, 3, 3 ) )
Run Code Online (Sandbox Code Playgroud)

从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);
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 在按钮上明确设置空白边框也会改变按钮的大小和内部布局(至少在具有系统和金属外观的Vista上).绝对想要在包含的面板上设置它. (4认同)