크기 조정이 불가능한 JFrame을 생성할 때 setLocation 메서드가 창을 제대로 고려하지 않는 것으로 나타남 Windows Aero가 활성화된 경우 테두리. 결과적으로 테두리가 겹칩니다. Aero가 비활성화되거나 setRessible 호출이 제거된 경우 예상한 대로 동작합니다.
문제는 크기 조정이 불가능한 컨테이너의 경계를 설정할 때 발생합니다. 경계를 변경하면 사용자의 플랫폼별 글꼴 설정에 따라 텍스트가 보이지 않게 렌더링될 수 있습니다.
크기 조정이 불가능한 컨테이너의 경계를 설정하는 올바른 접근 방식은 모든 텍스트가 호스트 플랫폼의 기본 글꼴에 관계없이 계속 표시됩니다. 이는 문자열의 픽셀 너비와 컨테이너의 높이를 기준으로 경계를 조정하여 달성할 수 있습니다.
예를 들어 다음 코드는 ComputeStringWidth를 사용하여 문자열의 픽셀 너비를 계산하고 이에 따라 프레임 크기를 설정합니다.
JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT); int w = SwingUtilities.computeStringWidth( label.getFontMetrics(label.getFont()), s); int h = f.getHeight(); f.setSize(w, h); f.setResizable(false);
이렇게 하면 사용자 플랫폼의 글꼴 설정에 관계없이 텍스트가 표시됩니다.
위 내용은 Windows Aero에서 표시되는 텍스트와 함께 크기 조정이 불가능한 JFrame을 올바르게 배치하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!