これは私のコードです:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Test{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
JPanel jp = new JPanel();
jp.setMinimumSize(new Dimension(200, 200));
jp.setPreferredSize(new Dimension(200, 200));
//frame.getContentPane().setMinimumSize(new Dimension(200, 200));
//frame.getContentPane().setPreferredSize(new Dimension(200, 200));
frame.getContentPane().add(jp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
});
}
}
それはまさに私が望むように動作します。ユーザーはサイズを変更できJFrame
ますが、常に 200px x 200px を保持するのに十分な大きさになりますJPanel
。しかし、私が削除すると:
JFrame.setDefaultLookAndFeelDecorated(true);
ユーザーはJFrame
任意のサイズにサイズ変更できます。
デフォルトのルック アンド フィールの装飾がサイズ変更に影響するのはなぜですか? なしで動作させるにはどうすればよいsetDefaultLookAndFeelDecorated(true)
ですか?フレームの最小サイズを手動で設定できることは知っています ( JFrame#setMinimumSize(new Dimension dim)
)。よりスマートなソリューションがない場合はそうします。
Windows 7でjdk 1.7を使用しています。