JFrame 内で長方形を描画しようとする場合、フレーム サイズ、サイズ変更可能なプロパティ、および長方形の設定座標によっては、四角形がフレーム内の中央に配置されない場合があります。
この根本的な理由不一致は、枠線やタイトル バーなどのフレームの装飾にあります。これらの装飾はフレーム内のスペースを占有し、四角形の位置に影響を与えます。
適切なセンタリングを確保するには、フレームに直接ペイントするのではなく、フレームのコンテンツ領域にペイントすることが重要です。コンテンツ領域は基本的に、装飾を除いたフレームの内側部分です。
コード例:
public class CenteredRectangle { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } // Create a JFrame with a content pane JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setPreferredSize(new Dimension(800, 400)); frame.pack(); // Create a component to be centered JPanel panel = new JPanel(); panel.setBackground(Color.RED); panel.setPreferredSize(new Dimension(700, 300)); // Add the component to the content pane frame.getContentPane().add(panel); frame.validate(); // Position the frame at the center of the screen frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
この例では、JFrame のコンテンツ領域が設定されています優先サイズ 800x400 に設定され、中央に配置されるコンポーネントである JPanel は、優先サイズ 800x400 に設定されます。 700×300。コンテンツ ペインで validate() メソッドを使用すると、コンポーネントの実際のサイズと位置が計算されて適用されます。
これで、コンポーネントは JFrame 内で水平方向と垂直方向の両方で正しく中央に配置されるはずです。
以上がJFrame のコンテンツ ペイン内でコンポーネントを中央に配置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。