こんにちは、みんな!明らかに単純な問題を解決しようとしていますが、解決できません。Java/Swing ライブラリを使用したサンプル アプリケーションに取り組んでいます。JFrame と JPanel があります。次の目標を達成したいだけです。
JPanelは、JFrame の中央に配置する必要があります。
JPanelは常にsetPreferredSize () メソッドで指定されたサイズでなければなりません。このサイズ未満にサイズ変更してはなりません。
私は GridBagLayout を使用してみました: それは私ができる唯一の方法です。
以下のサンプルを参照してください。
/* file StackSample01.java */
import java.awt.*;
import javax.swing.*;
public class StackSample01 {
public static void main(String [] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(100, 100));
panel.setBackground(Color.RED);
frame.setLayout(new GridBagLayout());
frame.add(panel, new GridBagConstraints());
frame.setSize(new Dimension(200, 200));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
ここにスクリーンショットがあります:
単純すぎることを行うために GridBagLayout を使用することはありません。Box を使用して最も簡単な解決策を試しましたが、これは機能しません。
サンプルコード:
/* file StackSample02.java */
import java.awt.*;
import javax.swing.*;
public class StackSample02 {
public static void main(String [] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(100, 100));
panel.setBackground(Color.RED); // for debug
panel.setAlignmentX(JComponent.CENTER_ALIGNMENT); // have no effect
Box box = new Box(BoxLayout.Y_AXIS);
box.add(Box.createVerticalGlue());
box.add(panel);
box.add(Box.createVerticalGlue()); // causes a deformation
frame.add(box);
frame.setSize(new Dimension(200, 200));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
ここにスクリーンショット、
何か案は?ありがとうございます :-)