【发布时间】:2017-08-12 04:35:52
【问题描述】:
嗨,我正在编写一个简单的程序来显示一个框架。 但是,当我键入 setLayout(null); 时,框架变得非常小; 但是如果我忽略这个命令,按钮总是在顶部中心 有人能指出我的错误吗?
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class theframe {
private static void create() {
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Insets insets = frame.getInsets();
frame.setSize(500 + insets.left + insets.right, 350 + insets.top + insets.bottom);
add(frame.getContentPane()); //my function add
frame.pack();
frame.setVisible(true);
}
public static void add(Container pane) {
pane.setLayout(null);
Insets insets = pane.getInsets();
JPanel p1 = new JPanel();
p1.setPreferredSize(new Dimension(500, 350));
JButton b1 = new JButton("one");
Dimension size = b1.getPreferredSize();
b1.setBounds(25 + insets.left, 5 + insets.top, size.width, size.height);
pane.add(p1);
p1.add(b1);
}
public static void main(String Args[]) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
create();
}
});
}
}
【问题讨论】:
-
规则似乎是“没有 LayoutManager 就没有 UI”。
-
打包后尝试设置
JFrame的大小。否则pack()将重置您的尺寸。 -
对不起,我不明白。我正在从 oracle 教程中学习,并且正在使用 null 布局我不知道为什么它会发生在我的运行中
-
@UwePlonus 是的,但按钮和面板不再可见
-
提供 GUI 的 ASCII 艺术,因为它应该以最小尺寸显示,并且(如果可调整大小)具有额外的宽度/高度。