Hallöchen…
ich sitze vor einem Problem und komme einfach nicht weiter.
Vll. liegt es an meinem Eclipse ?!..
Ich möchte in einem Fenster mit 3 Buttons zwischen den Looks wählen. Also je nachdem welchen Button ich aktiviert habe soll das Fenster z.b. im Windows-Style sein.
Hier mein Programmcode:
package look\_feel;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.\*;
public class Look1 extends JFrame implements ActionListener {
private JButton[] knopf = new JButton[3];
// Speichert Informationen der Methode getInstalledLookandFeels
private LookAndFeelInfo[] erscheinung = UIManager
.getInstalledLookAndFeels();
private String[] UIname = { "Metal", "Motif", "Windows" };
public Look1() {
super("Metal");
JPanel platte = new JPanel();
platte.setLayout(new FlowLayout());
Box oben = Box.createHorizontalBox();
oben.setPreferredSize(new Dimension(380, 50));
platte.add(oben);
for (int i = 0; i
Hoffe mir kann jemand weiterhelfen.
Bekomme so komische Fehlermeldungen z.b. in Zeile
if (quelle == knopf[i]) {
--\> java.lang.ArrayIndexOutOfBoundsException
Müsste doch gehen, oder? Hab diese Übung aus einem Buch. Habe dann anschließend die Lösung dazu ausprobiert, aber diese geht auch nicht.
Danke im Voraus
Grüßl, Mömchen
Hoffe mir kann jemand weiterhelfen.
Bekomme so komische Fehlermeldungen z.b. in Zeile
if (quelle == knopf[i]) {
–> java.lang.ArrayIndexOutOfBoundsException
Fehlermeldungen sind die (wenig komische) Folge von Fehlern
Oben holst du dir mit getInstalledLookAndFeels() eine, zur Laufzeit unbekannte Anzahl von L’n’Fs. Also ist auch das Array von unbekannter Länge. Gleichzeitig aber verdrahtest du die zu erwartende Anzahl fest auf 3. Bei mir z.B. sind es aber 4: „Metal“, „Nimbus“, „CDE/Motif“ und „GTK+“. Wenn also obige Fehlermeldung kommt, dann deswegen, weil du hinter das Array greifst, also bei wenn i == 3. Erstaunlicherweise steht da ein erscheinung.length-1. Das heißt, bei dir müsste getInstalledLookAndFeels() sogar mind. 5 L’n’Fs zurückgeben, damit es kracht. Gib’ die erkannten L’n’Fs mal in einer Schleife aus.
Hey…
erstmal danke
Bin auch dahinter gekommen, dass wohl wirklich ein Fehler im Array vorliegt. Bei mir sinds auch 4, statt 3…
Allerdings hatte ich vorher schon deswegen rumprobiert.
Dann bekomme ich zwar keine Fehlermeldung mehr, allerdings ändert sich das Fenster bei mir auch nicht.
Könntest du vll. mal probieren, ob es bei dir geht?
Vielleicht liegts einfach nur an meinem Eclipse…
*hmm*
Grüßl, Mömchen
Hey…
so noch ein Anlauf.
Bei mir sinds 5:
-Metal javax.swing.plaf.metal.MetalLookAndFeel
-Nimbus com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
-CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel
-Windows com.sun.java.swing.plaf.windows.WindowsLookAndFeel
-Windows Classic com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Läuft natürlich nach wie vor nicht so wie ich will…
Grüßl
Logisch. Die Zuordnung stimmt nicht. „Windows“ kommt bei dir auf dem 3. Button, aber in der Liste der erkannten L’n’Fs erst an 4. und 5. Stelle. Du darfst absolut nichts fest verdrahten. Wenn das Programm 5 L’n’Fs erkennt, muss du da auch dynamisch 5 Button erzeugen.
Das andere Problem. Es muss updateComponentTreeUI() aufgerufen werden, damit das gewählte L’n’F wirksam wird. Das geschieht bei dir in der Fehlerbehandlung. Vermutlich ein Flüchtigkeitsfehler.
Hallöle…
So… erstmal wieder Danke
Hab auch gerade den Fehler gefunden…
catch (Exception x) {}
// aktualisierte Anzeige für Titelleiste des Fensters
// SwingUtilities für optische Umgestaltung des Fensters
// updateComponentTreeUI bringt aktuellen Container des
// Fensters und Komponenten auf aktuellen Stand
SwingUtilities.updateComponentTreeUI(this.getContentPane());
Ja, die verdammte Klammer. Das Design ändert sich jetzt *juhu*
Werd dann mal den Rest anpassen…
Danke nochmal
Grüßl