online 1
gast (50)

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

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon sunny84 vom 15.04.2020, 16:48 Options

Java: Swing,innere klassen

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:

 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");
                               ...
                }; 



..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 schreiben

Antwort 1 von Rangoo vom 15.04.2020, 23:36 Options

'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 vom 15.04.2020, 23:44 Options

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 vom 15.04.2020, 23:46 Options

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

Antwort 4 von Marvin42 vom 16.04.2020, 12:22 Options

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.

Ähnliche Themen

iceweasel / firefox: java installation
Sichtbarer  12.06.2007 - 220 Hits - 5 Antworten

java
petty  16.09.2007 - 111 Hits - 2 Antworten

Phex - java 1.5.0
Wolkra  20.10.2007 - 115 Hits - 4 Antworten

*.java, wie aufrufen?
Marilana  17.01.2008 - 156 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026