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();
}
}
您可以创建一个mainJPanel
并将其他所有内容插入其中
然后可以使用BorderFactory
创建EmptyBorder
或LineBorder
看看这个答案:
如果在内容窗格中使用JPanel
,只需panel.setboorder(newemptyborder(10,10,10,10))
@andrewhompson如果OP询问如何设置框架上的插入,为什么不覆盖getInsets()
?@Dan 1)2)3)我们很少使用单一布局创建应用程序,因此也可以创建一个主面板作为内容窗格。4) 但除了这三个令人信服的原因之外,我想不是。我没有使用方法getContentPane
,而是创建了一个JPanel
namecontentPanel
来访问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();
}
}