LookAndFeel während der Laufzeit verstellen

Status
Nicht offen für weitere Antworten.

DeeDee0815

Bekanntes Mitglied
Hallo,

im Einstellungsdialog meines Programmes soll man das Layout festlegen können. Dazu gibt es eine JComboBox. Ich habe einen ActionListener hinzugefügt und nun soll das Design verstellt werden. Das klappt mit folgender Lösung halbwegs:

Code:
try {
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
    SwingUtitlities.updateComponentTreeUI(this);
} catch(UnsupportedLookAndFeelException exception) {
    System.err.println(exception.toString());
} catch(ClassNotFoundException exception) {
    System.err.println(exception.toString());
} catch(InstantiationException exception) {
    System.err.println(exception.toString());
} catch(IllegalAccessException exception) {
    System.err.println(exception.toString());
}

Das Design des Programms ändert sich nur bei neu erstellten Elementen. Wie kann ich also das Layout des ganzen Programms zur Laufzeit ändern.

Und ich habe noch ein Problem: Der ActionListener der JComboBox funktioniert nicht.

Code:
final String[] designs = {
    "Systemdesign", "Metal", "Motif"
};
JComboBox design1 = new JComboBox(designs);
design1.addActionListener(this);

[...]

public void actionPerformed(ActionEvent event) {
	String command = event.getActionCommand();
	if(command == "Metal") {
		try {
			[...]
		} catch [...]
}

Wie kann man das vernünfitg realisieren?

MfG
DeeDee0815
 

André Uhres

Top Contributor
Code:
package gui1;
/*
 * LAFDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import javax.swing.*;
public class LAFDemo extends JFrame {
    private JToolBar toolBar;
    private JMenuBar menuBar;
    public LAFDemo() {
        super("LAF Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        UIManager.addPropertyChangeListener(new PropertyChangeListener() {
            public void propertyChange(final PropertyChangeEvent event) {
                SwingUtilities.updateComponentTreeUI(LAFDemo.this);
            }
        } );
        toolBar = new JToolBar();
        toolBar.add(LAFManager.createBoxLAF());
        getContentPane().add(toolBar, BorderLayout.NORTH);
        menuBar = createMenuBar();
        setJMenuBar(menuBar);
    }
    private JMenuBar createMenuBar() {
        JMenuBar bar = new JMenuBar();
        JMenu options = new JMenu("Options");
        JMenuItem laf = new JMenuItem("Look and Feel");
        options.add(laf);
        bar.add(options);
        laf.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, LAFManager.createBoxLAF(), 
                        "Look and Feel", JOptionPane.PLAIN_MESSAGE);
            }
        });
        return bar;
    }
    public static void main(final String args[]) {new LAFDemo().setVisible(true);}
}
/*
 * LAFManager
 */
class LAFManager {
    private String lafClassName;
    private String name;
    public LAFManager(final String name, final String lafClassName) {
        this.name = name;
        this.lafClassName = lafClassName;
    }
    public String getLAF() {return lafClassName;}
    public String toString() {return name;}
    public static  JComboBox createBoxLAF() {
        final JComboBox box = new JComboBox();
        String classnameCurrentLAF = UIManager.getLookAndFeel().getClass().getName();
        UIManager.LookAndFeelInfo info[]  = UIManager.getInstalledLookAndFeels();
        DefaultComboBoxModel boxLAFmodel = new DefaultComboBoxModel();
        LAFManager currentLAF = null;
        for(int i = 0; i < info.length; i++) {
            LAFManager item = new LAFManager(info[i].getName(), info[i].getClassName());
            boxLAFmodel.addElement(item);
            if(info[i].getClassName().equals(classnameCurrentLAF)) {
                currentLAF = item;
            }
        }
        boxLAFmodel.setSelectedItem(currentLAF);
        box.setModel(boxLAFmodel);
        box.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent event) {
                try {
                    UIManager.setLookAndFeel(((LAFManager)box.getSelectedItem()).getLAF());
                } catch (Exception exc) {
                    System.out.println("Unable to set LAF");
                }
            }
        } );
        return box;
    }
}

Look And Feel zur Laufzeit ändern
Look&Feel zur Laufzeit umstellen: Fensterleiste verschwi
Look&Feel - Fenster starten
Look&Feel wird nur teilweise angezeigt!
 

DP

Top Contributor
bitte auch mal die suche benutzen. das thema hatten wir schon zig mal durchgekaut
 

André Uhres

Top Contributor
DP hat gesagt.:
bitte auch mal die suche benutzen. das thema hatten wir schon zig mal durchgekaut
Ich hab oben eine Threadauswahl hinzugefügt.
Die Variante mit "PropertyChangeListener" und eigenem "LAFItem" wurde anscheinend noch nicht vorgestellt :wink:
 

DeeDee0815

Bekanntes Mitglied
DP hat gesagt.:
bitte auch mal die suche benutzen. das thema hatten wir schon zig mal durchgekaut

Ja, entschuldigung. Die Suche habe ich zwar genutzt, war gestern aber zu ungeduldig um mehr als einen Beitrag durchzulesen. Wird nicht wieder vorkommen. :oops:

Ansonsten natürlich herzlichen Dank an André Uhres für das Beispiel. :D

MfG
DeeDee0815
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
F Setzen des LookAndFeel AWT, Swing, JavaFX & SWT 4
T LayoutManager LookAndFeel-Problem AWT, Swing, JavaFX & SWT 4
U LookAndFeel für eine Komponente AWT, Swing, JavaFX & SWT 2
N LookAndFeel Wie kann ich mein eigenes LookAndFeel machen? AWT, Swing, JavaFX & SWT 6
I LookAndFeel setzen AWT, Swing, JavaFX & SWT 17
I LookAndFeel AWT, Swing, JavaFX & SWT 15
GUI-Programmer Translucent JFrame mit System-LookAndFeel AWT, Swing, JavaFX & SWT 4
D LookAndFeel setzen AWT, Swing, JavaFX & SWT 2
hdi Swing ListCellRenderer und LookAndFeel AWT, Swing, JavaFX & SWT 11
K LookAndFeel LookAndFeel nur für einen Frame? AWT, Swing, JavaFX & SWT 6
B LookAndFeel für einen Komponenten AWT, Swing, JavaFX & SWT 2
J Swing LookAndFeel Klassenname herausfinden AWT, Swing, JavaFX & SWT 2
FuriKuri LookAndFeel in Linux setzen AWT, Swing, JavaFX & SWT 16
T Swing Substance LookAndFeel verhält sich merkwürdig AWT, Swing, JavaFX & SWT 4
G LookAndFeel AWT, Swing, JavaFX & SWT 5
G setLookAndFeel to default LookAndFeel? AWT, Swing, JavaFX & SWT 4
D LookAndFeel mit WindowBlinds AWT, Swing, JavaFX & SWT 2
I LookAndFeel AWT, Swing, JavaFX & SWT 3
B Frage zu Synth LookAndFeel AWT, Swing, JavaFX & SWT 4
G Windows LookAndFeel - Classpath AWT, Swing, JavaFX & SWT 6
G Ändern der Standartschrift vom LookAndFeel AWT, Swing, JavaFX & SWT 4
G JButton LookAndFeel AWT, Swing, JavaFX & SWT 2
O LookAndFeel und Performance AWT, Swing, JavaFX & SWT 7
M Problem mit LookAndFeel auf unterschiedlichen Rechnern AWT, Swing, JavaFX & SWT 3
B XP-LookAndFeel + modifizierter JTableHeader unsichtbar AWT, Swing, JavaFX & SWT 3
M LookAndFeel? Erst beim 2.Mal Öffnen eines Menüs? AWT, Swing, JavaFX & SWT 3
T LookAndFeel Erstellung :: Problem mit JTabbedPanes AWT, Swing, JavaFX & SWT 2
D Font eines JLabels verändern, JLabel mit LookAndFeel-Format AWT, Swing, JavaFX & SWT 2
N LookAndFeel - Nicht gleich alles überschreiben AWT, Swing, JavaFX & SWT 8
G JFileChooser: leeres Fenster nach LookAndFeel-Wechel AWT, Swing, JavaFX & SWT 7
M LookAndFeel und Mnemonische Kürzel AWT, Swing, JavaFX & SWT 7
G LookAndFeel in extra Fenster einstellbar AWT, Swing, JavaFX & SWT 2
B wie behält man die aktuellen LookAndFeel einstellungen? AWT, Swing, JavaFX & SWT 7
H JItem während der Programmlaufzeit verändern AWT, Swing, JavaFX & SWT 8
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
M JavaFX Absoluter Fokus während drag Event AWT, Swing, JavaFX & SWT 10
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
T Timer und GIF Animationen pausieren während Maus sich bewegt AWT, Swing, JavaFX & SWT 4
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
B 3D-Grafik Java 3D Licht während Laufzeit ändern AWT, Swing, JavaFX & SWT 0
Joew0815 Dropdown meue während der Laufzeit ändern. AWT, Swing, JavaFX & SWT 6
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
H jprogressbar während datenabfrage anzeigen AWT, Swing, JavaFX & SWT 5
B ProgressBar während Berechnung AWT, Swing, JavaFX & SWT 4
M Swing JList Item in andere JList während Ausführung AWT, Swing, JavaFX & SWT 4
M JLabel aktualsisieren während Verarbeitung AWT, Swing, JavaFX & SWT 12
E Buttons während einer Berechnung deaktivieren AWT, Swing, JavaFX & SWT 6
D JTable Mausevents, während editiert wird AWT, Swing, JavaFX & SWT 5
T Swing JFrame blockieren während anderes JFrame offen ist AWT, Swing, JavaFX & SWT 2
R Wie Vorgehen bei fundamentaler Veränderung des Layouts während des Programmablaufs? AWT, Swing, JavaFX & SWT 19
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X Tabelle während Funktionsaufruf aktualisieren AWT, Swing, JavaFX & SWT 11
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
S Swing Während Frame verschoben wird... AWT, Swing, JavaFX & SWT 2
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
T Swing Dialoginhalt automatisch anpassen während Größenänderung AWT, Swing, JavaFX & SWT 2
D Swing Anzeige während eines Ladevorganges AWT, Swing, JavaFX & SWT 6
O Swing es können keine neuen Labels hinzufügt werden während der Timer läuft AWT, Swing, JavaFX & SWT 14
S Java3D: Alle Objekte in BranchGroup löschen während Laufzeit AWT, Swing, JavaFX & SWT 3
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
M SWT Mutter-Shell blocken während Tochter-Shell noch offen ist AWT, Swing, JavaFX & SWT 6
S Swing DnD: Image während Drag-Operation ändern AWT, Swing, JavaFX & SWT 3
M Swing JTable während Laufzeit beschreiben AWT, Swing, JavaFX & SWT 14
S Objekt wird während Endlosschleife nur einmal bewegt AWT, Swing, JavaFX & SWT 2
O Zeichnene auf ein Jpanel während der Laufzeit des Programms AWT, Swing, JavaFX & SWT 2
J GUI (JTable) während Rekursion aktualisieren AWT, Swing, JavaFX & SWT 4
M Erzeugen von Komponenten während der Laufzeit AWT, Swing, JavaFX & SWT 6
S Methode während ihrer Laufzeit abbrechen AWT, Swing, JavaFX & SWT 6
P GUI-Updaten während eines externen Prozesses AWT, Swing, JavaFX & SWT 2
C jComboBox während eingabe kontextabhängig vorausfüllen AWT, Swing, JavaFX & SWT 3
G Wie Fenstergröße während Fenstergrößenänderung auslesen? AWT, Swing, JavaFX & SWT 2
F Aktualisierung während MOUSE_PRESSED AWT, Swing, JavaFX & SWT 4
D Widget/Control während Laufzeit durch ein anderes ersetzen AWT, Swing, JavaFX & SWT 3
E JTable-während der Einfügezeit der Zellen in die Table AWT, Swing, JavaFX & SWT 2
B JButton während der Laufzeit in JLabel umwandeln AWT, Swing, JavaFX & SWT 3
P JTextArea veränder Größe während Laufzeit; GridBagLayout AWT, Swing, JavaFX & SWT 8
Redfrettchen JTextArea während einer DocumentListener Notification ändern AWT, Swing, JavaFX & SWT 5
D JComponets während der Laufzeit in ein Panel einfügen AWT, Swing, JavaFX & SWT 2
Y Aktion während gedrückter Taste AWT, Swing, JavaFX & SWT 2
K Syntaxhighlight während der Texteingabe AWT, Swing, JavaFX & SWT 11
B Kein Repaint während eines Prozesses. AWT, Swing, JavaFX & SWT 5
D JTable Header während Laufzeit ändern. AWT, Swing, JavaFX & SWT 3
L JTable - Button Speichern während des Editieren AWT, Swing, JavaFX & SWT 3
S LaF - switcht erst während des Runs auf System.LaF AWT, Swing, JavaFX & SWT 2
M während der Roboter arbeitet sollte man sich raushalten. AWT, Swing, JavaFX & SWT 6
m@nu Dialog während warten anzeigen AWT, Swing, JavaFX & SWT 3
M GUI Update während der Verarbeitung einer Methode AWT, Swing, JavaFX & SWT 3
G Textfeldgröße während Eingabe ändern AWT, Swing, JavaFX & SWT 4
M In einem JFrame Menüs & . während der Laufzeit verändern AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben