JApplet mit Look&Feel?

PrincE

Aktives Mitglied
Hallo Leute 🙂

Gibt es einen bestimmten Grund warum ich kein LookAndFeel bei einem JAppet zum Laufen bringe?

Java:
try
		{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		}
		catch (ClassNotFoundException e){e.printStackTrace();} catch (InstantiationException e){e.printStackTrace();} catch (IllegalAccessException e){e.printStackTrace();} catch (UnsupportedLookAndFeelException e){e.printStackTrace();}

Ich hab schon bisschen rumm gegoggelt und Suchfunktion und so aber irgendwie scheint ja keiner meine Probleme zu haben.

Bei einem JFrame läuft alles problemfrei..
 
Mhmm, normal sollte das bei einem Applet auch gehen.
Wird denn eine Exception geworfen? Woran erkennst du dass das Look&Feel nicht gesetzt wird? Was für Komponenten setzt du ein?
Nimbus ist auch erst ab Java6u10 mit an Board, vllt liegts daran, dann wäre wieder die Frage nach der Exception ..🙂
 
keine Exception kommt.

Ich weis es daher, weil ich Komponenten ganz normal wie auch beim JFrame verwende die aber beim JApplet nicht Design mäßig geändert werden und beim JFrame schon.
Andere ältere Look&Feel haben auch kein Effekt beim JApplet.
 
Mach mal ein kleines Beispiel das man ausführen kann....wo setzt du denn das LookAndFeel? In der init-Methode?
Java:
public class Snippet extends JApplet {

	@Override
	public void init() {
		super.init();
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			e.printStackTrace();
		}
		JPanel panel = new JPanel();
		panel.add(new JButton("Nimbus-Button"));
		add(panel);
	}
}

funzt bei mir....
 
ich machs einfach ganz am Anfang in die Main das funktioniert beim JFrame aber beim JApplet nicht

Java:
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Starter
{
	public static Window oWindow;
	
	public static void main(String param[])
	{
		try
		{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		}
		catch (ClassNotFoundException e){e.printStackTrace();} catch (InstantiationException e){e.printStackTrace();} catch (IllegalAccessException e){e.printStackTrace();} catch (UnsupportedLookAndFeelException e){e.printStackTrace();}
		
		oWindow = new Window();
		oWindow.setVisible(true);
	}
}

hier ist Window ein JApplet

ist ja misteriös bei mir Funktioniert dein Beispiel nicht
 
auch ohne main funktionierts nicht...

Java:
import java.awt.Color;
import java.awt.Font;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Window extends JApplet
{
	private static final long serialVersionUID = 1L;
	
	JPanel panelOberflaeche = new JPanel();
	JLabel labelAusgabe = new JLabel("Ausgabe: ");
	
	JTextField textfieldEingabeUbersetzung = new JTextField();
	JTextField textfieldLeseVokabel = new JTextField();
	
	JMenuBar menuBar;
	JMenu menuDatei;
	JMenu menuEinstellungen;
	
	JButton buttonNeustarten = new JButton();
	JButton buttonWeiter = new JButton(); 
	
	JComboBox comboboxTest = new JComboBox();
	
	@Override
    public void init() {
		
		System.out.println("qwe");
        super.init();
        try {
            UIManager
                    .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
	}
	
	public Window()
	{
		this.setLayout(null);
		this.setVisible(true);
		this.setBounds(0, 0, 862, 588);
		panelOberflaeche.setBounds(this.getBounds());
		panelOberflaeche.setLayout(null);
		
		menuBar = new JMenuBar();
		setJMenuBar(menuBar);
	
		menuDatei = new JMenu("Datei");
		menuEinstellungen = new JMenu("Einstellungen");
	    
	    menuBar.add(menuDatei);
		menuBar.add(menuEinstellungen);
	    
		JMenuItem menuItemNeueAbfrage = new JMenuItem("Neue Abfrage");
		JMenuItem menuItemNeustarten = new JMenuItem("Aktuelle Abfrage neustarten");
	    JMenuItem menuItemBeenden = new JMenuItem("Aktuelle Abfrage Beenden");
	    JMenuItem menuItemTon = new JMenuItem("Ton ein");
	    
	    menuDatei.add(menuItemNeueAbfrage);
	    menuDatei.add(menuItemNeustarten);
	    menuDatei.addSeparator();
	    menuDatei.add(menuItemBeenden);
	
	    menuEinstellungen.add(menuItemTon);
	    menuItemTon.setText("Ton aus");
		
	    textfieldLeseVokabel.setBounds(140, 140, 300, 100);
	    textfieldLeseVokabel.setEditable(false);
	    textfieldLeseVokabel.setFont(new Font("Arial",1,16));
	    textfieldLeseVokabel.setForeground(Color.blue);
	    textfieldLeseVokabel.setText("Flugzeug");
	    
		textfieldEingabeUbersetzung.setBounds(140,300,400,60);
		textfieldEingabeUbersetzung.setFont(new Font("Arial",1,16));
		textfieldEingabeUbersetzung.setForeground(Color.black);
		
		buttonNeustarten.setBounds(40, 480, 100, 40);
		buttonNeustarten.setText("neustarten");
		
		buttonWeiter.setBounds(200, 480, 100, 40);
		buttonWeiter.setText("weiter");
		
		comboboxTest.setBounds(20, 20, 200, 40);
		comboboxTest.addItem("qwe");

		this.add(panelOberflaeche);
		panelOberflaeche.add(labelAusgabe);
		panelOberflaeche.add(textfieldEingabeUbersetzung);
		panelOberflaeche.add(textfieldLeseVokabel);
		panelOberflaeche.add(buttonNeustarten);
		panelOberflaeche.add(buttonWeiter);
		panelOberflaeche.add(comboboxTest);
	}
}

macht kein Unterschied :/
 
Zuletzt bearbeitet:
Grr 🙂
Also init() wird AUTOMATISCH aufgerufen von dem Applet! Das ist die Einstiegsmethode, quasi die main, die rufst du ja auch nicht selbst auf normalerweise.([EDIT]: Ok haste schon bemerkt 😀)
Dann könnte es auch helfen die Komponenten nicht direkt zu initialisieren, sondern erstmal nur zu deklarieren, das LookAndFeel setzen und dann zu initialisieren:
Java:
import java.awt.Color;
import java.awt.Font;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Window extends JApplet {
	private static final long serialVersionUID = 1L;

	JPanel panelOberflaeche;
	JLabel labelAusgabe;

	JTextField textfieldEingabeUbersetzung;
	JTextField textfieldLeseVokabel;

	JMenuBar menuBar;
	JMenu menuDatei;
	JMenu menuEinstellungen;

	JButton buttonNeustarten;
	JButton buttonWeiter;

	JComboBox comboboxTest;

	@Override
	public void init() {
		System.out.println("qwe");
		super.init();
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			e.printStackTrace();
		}

		initComponents();
	}

	private void initComponents() {
		panelOberflaeche = new JPanel();
		labelAusgabe = new JLabel("Ausgabe: ");

		textfieldEingabeUbersetzung = new JTextField();
		textfieldLeseVokabel = new JTextField();

		buttonNeustarten = new JButton();
		buttonWeiter = new JButton();

		comboboxTest = new JComboBox();

		this.setLayout(null);
		this.setVisible(true);
		this.setBounds(0, 0, 862, 588);
		panelOberflaeche.setBounds(this.getBounds());
		panelOberflaeche.setLayout(null);

		menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		menuDatei = new JMenu("Datei");
		menuEinstellungen = new JMenu("Einstellungen");

		menuBar.add(menuDatei);
		menuBar.add(menuEinstellungen);

		JMenuItem menuItemNeueAbfrage = new JMenuItem("Neue Abfrage");
		JMenuItem menuItemNeustarten = new JMenuItem(
				"Aktuelle Abfrage neustarten");
		JMenuItem menuItemBeenden = new JMenuItem("Aktuelle Abfrage Beenden");
		JMenuItem menuItemTon = new JMenuItem("Ton ein");

		menuDatei.add(menuItemNeueAbfrage);
		menuDatei.add(menuItemNeustarten);
		menuDatei.addSeparator();
		menuDatei.add(menuItemBeenden);

		menuEinstellungen.add(menuItemTon);
		menuItemTon.setText("Ton aus");

		textfieldLeseVokabel.setBounds(140, 140, 300, 100);
		textfieldLeseVokabel.setEditable(false);
		textfieldLeseVokabel.setFont(new Font("Arial", 1, 16));
		textfieldLeseVokabel.setForeground(Color.blue);
		textfieldLeseVokabel.setText("Flugzeug");

		textfieldEingabeUbersetzung.setBounds(140, 300, 400, 60);
		textfieldEingabeUbersetzung.setFont(new Font("Arial", 1, 16));
		textfieldEingabeUbersetzung.setForeground(Color.black);

		buttonNeustarten.setBounds(40, 480, 100, 40);
		buttonNeustarten.setText("neustarten");

		buttonWeiter.setBounds(200, 480, 100, 40);
		buttonWeiter.setText("weiter");

		comboboxTest.setBounds(20, 20, 200, 40);
		comboboxTest.addItem("qwe");

		this.add(panelOberflaeche);
		panelOberflaeche.add(labelAusgabe);
		panelOberflaeche.add(textfieldEingabeUbersetzung);
		panelOberflaeche.add(textfieldLeseVokabel);
		panelOberflaeche.add(buttonNeustarten);
		panelOberflaeche.add(buttonWeiter);
		panelOberflaeche.add(comboboxTest);
	}

}

grob so etwas....
EDIT 2: und setVisible(true) am Besten immer erst am Ende aufrufen ! Könnte auch helfen
 
jo ich hab jetzt auch gemerkt das man init nicht aufrufen muss ^^

danke schön, ich musste nur noch unten repaint() danach ging alles 🙂))
 

Zurück
Oben