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 は 700x300 の推奨サイズに設定されます。コンテンツ ペインで validate() メソッドを使用すると、コンポーネントの実際のサイズと位置が計算されて適用されます。
これで、コンポーネントは、水平方向と垂直方向の両方で、JFrame 内で正しく中央に配置されるはずです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3