有没有办法设置 a 的插图JFrame
?我试过了
frame.getContentPane().getInsets().set(10, 10, 10, 10);
和
frame.getInsets().set(10, 10, 10, 10);
但它们似乎都不起作用。
JPanel contentPanel = new JPanel();
Border padding = BorderFactory.createEmptyBorder(10, 10, 10, 10);
contentPanel.setBorder(padding);
yourFrame.setContentPane(contentPanel);
所以基本上,contentPanel
是框架的主要容器。
覆盖Insets
ofJFrame
不会是您实际问题的灵魂。要回答您的问题,您不能设置JFrame
. 您应该扩展 JFrame 并覆盖该getInsets
方法以提供所需的插图。
您必须创建一个 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);
您可以创建一个 mainJPanel
并将其他所有内容插入其中。
然后您可以使用BorderFactory
创建EmptyBorder
或LineBorder
.
由于这个问题没有明确的答案,但您可以像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();
}
}