10

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

frame.getContentPane().getInsets().set(10, 10, 10, 10);

frame.getInsets().set(10, 10, 10, 10);

但它们似乎都不起作用。

4

5 回答 5

26
JPanel contentPanel = new JPanel();

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

contentPanel.setBorder(padding);

yourFrame.setContentPane(contentPanel);

所以基本上,contentPanel是框架的主要容器。

于 2013-01-02T06:13:03.737 回答
4

覆盖InsetsofJFrame不会是您实际问题的灵魂。要回答您的问题,您不能设置JFrame. 您应该扩展 JFrame 并覆盖该getInsets方法以提供所需的插图。

于 2013-01-02T06:39:36.160 回答
2

您必须创建一个 LayOutConstraint 对象并设置它的 Insets。就像在下面的示例中一样,我使用了 GridBagLayout() 并使用了 GridBagConstraint() 对象。

    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);
于 2013-01-02T06:01:02.833 回答
0

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

然后您可以使用BorderFactory创建EmptyBorderLineBorder.

看到这个答案: https ://stackoverflow.com/a/17925693/8953378

于 2019-04-23T08:00:46.177 回答
0

由于这个问题没有明确的答案,但您可以像basiljames在这里所说的那样做。正确的方法是扩展 aJFrame然后覆盖该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();
    }
}
于 2016-11-18T15:17:34.730 回答