При попытке нарисовать прямоугольник внутри 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