Java - 如何防止 BorderLayout EAST 拥抱屏幕的一侧?
如果我在东侧或西侧添加像 s 这样的组件,如何防止它拥抱屏幕的一侧?我希望在屏幕的s和边缘之间留出一些空间。JButton
JButton
如果我在东侧或西侧添加像 s 这样的组件,如何防止它拥抱屏幕的一侧?我希望在屏幕的s和边缘之间留出一些空间。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);
}
}
最有可能的是,容器中有多个按钮(或很快就会有),并希望将它们水平对齐。因此,请考虑将按钮放在嵌套中,并带有:JPanel
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;
}
然后将此面板添加到父框架或面板(带有 .)BorderLayout