有办法设置 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
是你的窗口的主要容器。
getContentPane
方法,而是创建了一个名为contentPanel
的JPanel
以便访问setBorder
方法。 - Mark Vizcarra 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);
由于这个问题目前没有明确的答案,您可以像basiljames所说的那样在这里进行操作。正确的方法是扩展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();
}
}
你可以创建一个主要的JPanel
,并将其他所有内容插入其中。
然后,您可以使用BorderFactory
创建EmptyBorder
或LineBorder
。
JPanel
作为内容面板,只需使用panel.setBorder(new EmptyBorder(10,10,10,10));
。 - Andrew ThompsongetInsets()
呢? - Dan