Java 如何设置JFrame的插图?

Java 如何设置JFrame的插图?,java,swing,jframe,insets,Java,Swing,Jframe,Insets,有没有办法设置JFrame的插入? 我试过了 及 但是它们似乎都不起作用。您必须创建LayOutConstraint对象并设置其插入。 就像下面的例子一样,我使用了GridBagLayout()和GridBagConstraint()对象 因此,基本上,contentPanel是框架的主要容器。覆盖JFrame的插入将不会解决实际问题。 要回答您的问题,您不能设置JFrame的插入。您应该扩展JFrame并覆盖getInsets方法,以提供所需的insets。因为这个问题没有明确的答案,但您可以

有没有办法设置
JFrame
的插入? 我试过了


但是它们似乎都不起作用。

您必须创建LayOutConstraint对象并设置其插入。 就像下面的例子一样,我使用了GridBagLayout()和GridBagConstraint()对象


因此,基本上,
contentPanel
是框架的主要容器。

覆盖
JFrame
插入将不会解决实际问题。

要回答您的问题,您不能设置
JFrame
的插入。您应该扩展JFrame并覆盖
getInsets
方法,以提供所需的insets。

因为这个问题没有明确的答案,但您可以像前面所说的那样做。正确的方法是扩展
JFrame
,然后重写
getInsets()
方法

比如说

import javax.swing.JFrame;
import java.awt.Insets;

public class JFrameInsets extends JFrame {
    @Override
    public Insets getInsets() {
        return new Insets(10, 10, 10, 10);
    }

    private JFrameInsets()  {
        super("Insets of 10");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setMinimumSize(getSize());
        setVisible(true);
    }

    public static void main(String[] args) {
        new JFrameInsets();
    }
}

您可以创建一个main
JPanel
并将其他所有内容插入其中

然后可以使用
BorderFactory
创建
EmptyBorder
LineBorder

看看这个答案:

如果在内容窗格中使用
JPanel
,只需
panel.setboorder(newemptyborder(10,10,10,10))
@andrewhompson如果OP询问如何设置框架上的插入,为什么不覆盖
getInsets()
?@Dan 1)2)3)我们很少使用单一布局创建应用程序,因此也可以创建一个主面板作为内容窗格。4) 但除了这三个令人信服的原因之外,我想不是。我没有使用方法
getContentPane
,而是创建了一个
JPanel
name
contentPanel
来访问
setBorder
方法。这不是一个好方法,因为在调整大小时插入会被破坏
frame.getInsets().set(10, 10, 10, 10);
    GridBagConstraints c = new GridBagConstraints();
    JPanel panel = new JPanel(new GridBagLayout());
    c.insets = new Insets(5, 5, 5, 5); // top, left, bottom, right
    c.anchor = GridBagConstraints.LINE_END;

    // Row 1
    c.gridx = 0;
    c.gridy = 0;
    c.anchor = GridBagConstraints.LINE_START;
    panel.add(isAlgoEnabledLabel, c);
JPanel contentPanel = new JPanel();

Border padding = BorderFactory.createEmptyBorder(10, 10, 10, 10);

contentPanel.setBorder(padding);

yourFrame.setContentPane(contentPanel);
import javax.swing.JFrame;
import java.awt.Insets;

public class JFrameInsets extends JFrame {
    @Override
    public Insets getInsets() {
        return new Insets(10, 10, 10, 10);
    }

    private JFrameInsets()  {
        super("Insets of 10");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setMinimumSize(getSize());
        setVisible(true);
    }

    public static void main(String[] args) {
        new JFrameInsets();
    }
}