在JFrame和JPanel之间加入空格

7

我该如何在一个JFrame和插入此JFrame的JPanel之间添加空白?我希望通过这种方式插入空白,使得JPanel内部的元素不会出现太靠近JFrame的情况。

2个回答

12

使用适当的参数,为JPanel设置一个EmptyBorder。

例如:

// caveat: code not tested
myPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

如果JPanel已经有了一个边框,那么你可以使用复合边框或将JPanel包装在另一个JPanel中,例如使用BorderLayout并在BorderLayout.CENTER位置放置,并为包装器JPanel设置一个空边框。


1
对于要放在其他面板内部的“内部”面板,另一种引入空间的方法是通过向父面板布局的构造函数提供参数。布局通常有一个允许指定组件之间水平和垂直间距的构造函数。 - Andrew Thompson

0
为什么不使用GridBagLayout和setBounds来设置组件的位置?这样组件就会停留在你想要的位置。
这里有一个例子:
'import javax.swing.*;
 import java.awt.*;
 public class set_Components_where_i_want {
    public static void main(String[] args){
        JFrame frame = new JFrame();
        frame.setLayout(null);
        //make new Components 
        JButton b1 = new JButton("One");
        JButton b2 = new JButton("Two");
        JButton b3 = new JButton("Three");
        //add Components first
        frame.add(b1);
        frame.add(b2);
        frame.add(b3);
        //get frame inserts 
        Insets insets = frame.getInsets();
        Dimension size = b1.getPreferredSize();
        //set position here
        b1.setBounds(50 + insets.left, 10 + insets.top,
                 size.width, size.height);
        size = b2.getPreferredSize();
        b2.setBounds(110 + insets.left, 80 + insets.top,
                 size.width, size.height);
        size = b3.getPreferredSize();
        b3.setBounds(300 + insets.left, 60 + insets.top,
                 size.width + 100, size.height + 40);
        //set size for the frame so it can contain all Components
        frame.setSize(600 + insets.left + insets.right,
                  250 + insets.top + insets.bottom);
        // make the frame be visible
        frame.setVisible(true);
}

}`


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接