をリサイズ避けるために、フレームの初期化にプロパティの下に使ってみて、間違って/あなたのコード内で何が起こっているかを伝えるのは難しいです。可能であれば、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);
}
}
これはうまくいきました。少なくとも、Linux上で動作します。 Cf http://stackoverflow.com/questions/2781939/setting-minimum-size-limit-for-a-window-in-java-swing?rq=1既に議論されている –
はい、リンクありがとうございます。今、この質問で、私たちはAndrewからより良い解決策を得ました。 – FaithReaper