메뉴를 사용하여 Java Swing 애플리케이션의 룩앤필을 변경할 때 새로 추가된 애플리케이션에 변경 사항이 반영되지 않을 수 있습니다. JTabbedPane. SwingUtilities.updateComponentTreeUI()를 활용함에도 불구하고 문제가 지속됩니다.
해결책에는 JTabPanes를 포함하여 전체 프레임의 UI를 업데이트하는 작업이 포함됩니다.
Window windows[] = Frame.getWindows(); for(Window window : windows) { SwingUtilities.updateComponentTreeUI(window); }
이 개념을 확장하면 더욱 강력한 구현이 가능해졌습니다. 다음은 JTabPanes를 포함하여 Swing 애플리케이션의 모양과 느낌을 동적으로 업데이트하는 예입니다.
public class JTabbedText { // ... (code omitted for brevity) private static JToolBar createToolBar(final Component parent) { // ... (code omitted for brevity) combo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { int index = combo.getSelectedIndex(); try { UIManager.setLookAndFeel( available[index].getClassName()); // Update the UI of all windows Window[] windows = Window.getWindows(); for (Window window : windows) { SwingUtilities.updateComponentTreeUI(window); } } catch (Exception e) { e.printStackTrace(System.err); } } }); // ... (code omitted for brevity) } // ... (code omitted for brevity) }
이 접근 방식을 사용하면 모양과 느낌의 변경 사항이 JTabPanes를 포함한 애플리케이션의 모든 부분에 전파됩니다. 일관된 사용자 경험을 제공합니다.
위 내용은 내 Swing JTabbedPane이 UIManager를 변경한 후 모양과 느낌을 업데이트하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!