您可以在您的 JFrame 上使用它(对不起,它是 Java,我不熟悉 Jython):
frame.setMinimumSize(frame.getPreferredSize());
如果强制执行最小尺寸LayoutManager
的内容窗格,您的代码可以工作。JFrame
但是,默认情况下你会得到一个BorderLayout
which 没有。如果您使用frame.setMinimumSize(pan.getPreferredSize());
,它将不起作用,因为框架的大小包括其插图(即框架边框的大小),因此您设置的最小尺寸实际上太小了。
这是一个小演示,展示了如何使最小尺寸在 JFrame 上工作:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TestMinimumSizeOnFrame {
protected void initUI() {
JFrame frame = new JFrame("example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
JPanel pan = new JPanel();
pan.add(new JLabel("Some nice beer"));
pan.add(new JButton("get one"));
frame.add(pan);
frame.setVisible(true);
frame.setMinimumSize(frame.getPreferredSize());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestMinimumSizeOnFrame().initUI();
}
});
}
}