Wenn Sie das Look and Feel einer Java Swing-Anwendung über ein Menü ändern, werden Änderungen möglicherweise nicht in einer neu hinzugefügten Anwendung widergespiegelt JTabbedPane. Trotz der Verwendung von SwingUtilities.updateComponentTreeUI() besteht das Problem weiterhin.
Die Lösung besteht darin, die Benutzeroberfläche des gesamten Frames zu aktualisieren, einschließlich aller darin enthaltenen JTabPanes:
Window windows[] = Frame.getWindows(); for(Window window : windows) { SwingUtilities.updateComponentTreeUI(window); }
Durch die Erweiterung dieses Konzepts wird a Eine robustere Implementierung kann erreicht werden. Hier ist ein Beispiel, das das Erscheinungsbild einer Swing-Anwendung, einschließlich aller JTabPanes, dynamisch aktualisiert:
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) }
Dieser Ansatz stellt sicher, dass Änderungen am Erscheinungsbild auf alle Teile der Anwendung, einschließlich JTabPanes, übertragen werden. Bereitstellung einer konsistenten Benutzererfahrung.
Das obige ist der detaillierte Inhalt vonWarum aktualisiert mein Swing JTabbedPane sein Erscheinungsbild nicht, nachdem der UIManager geändert wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!