我有一个JFrame不能小于特定尺寸,或元素不能正确布局.
我试图setMinimumSize()覆盖getMinimumSize()这个框架的方法,但我仍然可以将框架调整为更小.
所以,我一定要听界的变化,我的componentListener时候componentResized(),如果它的体积更小,以将其设置回正常大小setBounds()?
由于缺乏可编译的代码,很难分辨出代码中出现的问题.可能setMinimumSize(..)是在错误的时间和/或错误的值发生的呼叫.
在这里,此代码不允许框架比第一次出现的框架小,但允许用户将框架拖得更大.查看评论以获取提示.
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class MinimumSizeFrame {
private JComponent ui = null;
MinimumSizeFrame() {
initUI();
}
public void initUI() {
ui = new JPanel(new BorderLayout(4,4));
JLabel label = new JLabel("Text in big label");
label.setBorder(new EmptyBorder(40, 100, 40, 100));
ui.add(label);
}
public JComponent getUI() {
return ui;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
MinimumSizeFrame o = new MinimumSizeFrame();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.pack(); // have the JVM calculate the ideal size of this GUI
f.setMinimumSize(f.getSize()); // now use that as minimum!
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
Run Code Online (Sandbox Code Playgroud)