Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Java: Swing,innere klassen





Frage

hi, ich habe nach vorgabe ein programm in java geschrieben, welches 3 Buttons beinhaltet, durch klicken auf die buttons werden verschiedene "lookAndFeels" aufgerufen. Das sieht kurzgefasst so aus: [code] ActionListener a1 = new ActionListener() ... UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); ... }; ActionListener a2 = new ActionListener() ... UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); ... }; ActionListener a2 = new ActionListener() ... UIManager.setLookAndFeel("javax.swing.plaf.synth.SynthLookAndFeel"); ... }; [/code] ..ich habe also 3 Anweisungen, die bis auf das a1,a2,a3 und den L´n´F gleich aussehen... ich soll nun das ganze durch eine innere Klasse lösen? wie mache ich das? Kann ich da direkt´n string übergeben?? mfg

Antwort 1 von Rangoo

'n Abend!

Werd doch bitte etwas präziser, was genau du durch eine innere Klasse lösen sollst. Sollst du die bisher anonymen Listener durch eine einheitliche, neue Klasse ersetzen?
Dann kannst du der Klasse ja ein Attribut verpassen, das du im Konstruktor übergibst. Und das kann natürlich ein String sein.

Antwort 2 von sunny84

hey..

sorry, ich bin auf dem Gebiet blutiger Anfänger. Ich habe ja 3 innere Klassen, die von der struktur sehr ähnlich sind. Nun sollte ich das ganze irgendwie in eine gemeinsame Klasse packen... "wäre besser, weil es sich ja ohnehin weitgehenst wdh.."..

Ein kompletter listener sieht ja so aus:

ActionListener a1 = new ActionListener() 
                    {
                            public void actionPerformed(ActionEvent e)
                            {
                                    try //überwachter Code
                                    {
                                            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                                            SwingUtilities.updateComponentTreeUI(Swing2.this);
                                    }
                                    catch (Exception button1) 
                                    {
                                            button1.printStackTrace(); 
                                    }
                            }
                    };



davon gibbet´s ja bisher 3 untereinanderstehende :-)

Antwort 3 von sunny84

...die stehen bisher alle im konstruktor Swing2()

Antwort 4 von Marvin42

Ersetze die Erzeugung deiner Listener durch:

...
class LaFListener implements ActionListener {
  String laf;
  public LaFListener(String laf) {
    this.laf = laf;
  }
  public void actionPerformed(ActionEvent ae) {
    try {
      UIManager.setLookAndFeel(laf);
      SwingUtilities.updateComponentTreeUI(Swing2.this);
    }
    catch (Exception e) {
      e.printStackTrace(); 
    }
  }
}
ActionListener a1 = new LaFListener("...");

... sind dann natürlich die Look&Feels.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: