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으로 설정됩니다. 콘텐츠 창에서 유효성 검사() 메서드를 사용하면 구성 요소의 실제 크기와 위치가 계산되어 적용됩니다.
이제 구성 요소는 JFrame 내에서 가로 및 세로 모두 올바르게 중앙에 배치되어야 합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3