尝试在 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 中正确地水平和垂直居中。
以上是如何使组件在 JFrame 的内容窗格中居中?的详细内容。更多信息请关注PHP中文网其他相关文章!