요소의 글꼴 크기가 나머지 스윙 응용 프로그램과 다른 스윙 패널을 만들려고합니다. 처음에는 몇 가지 구성 요소에 setFont
을 사용하여 문제가 발생하지 않았습니다. 이제는 여러 구성 요소 (및 모든 하위 구성 요소)가 있으므로이 솔루션은 비실용적입니다.JPanel 및 모든 요소의 글꼴 크기 변경
스윙 구성 요소의 기본 UI 속성을 변경하는 방법을 검색했습니다. 내가 발견 한 것은 UIManager를 사용하는 것이 대부분입니다. UIManager는 속성을 전역 적으로 변경합니다. 다른 모든 패널의 현재 글꼴 설정을 유지하기 때문에이 기능이 작동하지 않습니다. 순간
(그리고 내가 처음 무언가를 시도하지 않고 게시하고 싶지 않기 때문에),이 같은 알고리즘이 있습니다public static void fixFont(Container c) {
c.setFont(c.getFont().deriveFont(10.0f));
Component[] comp = c.getComponents();
for (int i=0;i<comp.length;++i) {
if (comp[i] instanceof Container) {
fixFont((Container) comp[i]);
} else {
comp[i].setFont(comp[i].getFont().deriveFont(10.0f));
}
}
}
문제는 그런 :
- 그 테두리와 같은 특정 스윙 요소는 포함하지 않습니다. 내가 다른 구성 요소를 추가 할 때 동적으로 질문
이 함수를 호출해야
패널의 글꼴과 모든 요소 만 변경하고 싶습니다. 다른 패널의 글꼴을 변경하고 싶지 않습니다. UIManager를 사용하여이 작업을 수행하면 모든 Swing 구성 요소의 글꼴이 변경됩니다. – YuppieNetworking
아, 좋은 지적이야. 당신이 정말로 필요로하는 것을 깨닫지 못했습니다. 당신의 질문을 이해할 수있게 지금 어떻게 해결할 수 있을지 확신 할 수 없습니다. – aioobe
하나의 "백업"솔루션은 지금처럼 해보고,'getBorder'와'instanceof TitledBorder' /'TitledBorder.setTitleFont' 등을 통해서도 경계를 확인하고 업데이트 할 것입니다. – aioobe