Look and Feel

Status
Nicht offen für weitere Antworten.
K

kph

Gast
Guten Tag,

ich möchte eine Programm (Fenster.java) erstellen welches ein Fenster öffnet auf dem ein Button ist, wenn ich auf den Button klicke soll sich noch ein Fenster öffnen. Als weitere Funktion soll das Look-And-Feel umgestellt werden können, wenn ich das Look-And-Feel auf "Windows" stelle soll der Button der sich öffnet auch das Look-And-Feel bekommen.

Aber es fängt schon an das ich beim versuch das Programm zu kompelieren, folgenden Fehler bekomme:

java.lang.NoSuchMethodError: main
Exception in thread "main"


Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import java.util.Properties;
import java.io.FileInputStream;
import java.util.Iterator;

public class Fenster
extends JFrame
implements ActionListener
{
	private String plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
	private JButton btn = new JButton("Hilfe");
	private static Fenster wnd = new Fenster();
	
	public Fenster()
	{
		super("Test Fenster");

		JMenuBar menubar = new JMenuBar();
		menubar.add(createFileMenu());
		setJMenuBar(menubar);
		
		Container contentPane = getContentPane();
		contentPane.setLayout(new GridLayout(1,1));	
		
		JPanel zeile1 = new JPanel();
      	zeile1.setLayout(new GridLayout(1,2));
		btn.addActionListener(this);
      	zeile1.add(btn);            
     	zeile1.setBorder(BorderFactory.createEtchedBorder());
     	contentPane.add(zeile1);
	}
	
	private JMenu createFileMenu()
	{
		JMenu ret = new JMenu("Design");
		ret.setMnemonic('D');
		JMenuItem mi;
	
		// Metal
		mi = new JMenuItem("Metal",'l');
 		mi.addActionListener(this);
		ret.add(mi);
		
		// Motif
		mi = new JMenuItem("Motif",'f');
 		mi.addActionListener(this);
		ret.add(mi);
			
		// Windows
		mi = new JMenuItem("Windows",'W');
		mi.addActionListener(this);
		ret.add(mi);

		return ret;
	}
	public void actionPerformed(ActionEvent event)
	{
		String cmd = event.getActionCommand();
		try {
			//PLAF-Klasse auswählen
			if (cmd.equals("Metal")){
				plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
			}else if (cmd.equals("Motif")){
				plaf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
			}else if (cmd.equals("Windows")) {
				plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
			}
			//LAF umschalten
			UIManager.setLookAndFeel(plaf);
			SwingUtilities.updateComponentTreeUI(this);
		}catch(UnsupportedLookAndFeelException e) {
			System.err.println(e.toString());
		}catch (ClassNotFoundException e) {
			System.err.println(e.toString());
		}catch(InstantiationException e) {
			System.err.println(e.toString());
		}catch(IllegalAccessException e) {
			System.err.println(e.toString());
		}
		
		if(cmd == "Hilfe")
		{
			JOptionPane.showMessageDialog(wnd,"hier wird Ihnen geholfen","die Hilfe",1);
		}
	}
	public static void main(String[] args)
	{
		wnd.setResizable(false);
		wnd.setLocation(100,100);
		wnd.setSize(500	,175);
		wnd.setVisible(true);
	}
}

Meine Fragen sind also wie folgt:

1. Wie bekomme ich den Fehler weg?
2. Wie bekomme ich hin, das sich das Fenster mit dem richtigen Look-And-Feel öffnet?
 

Schnitter

Bekanntes Mitglied
Ich denke mal, dass irgendwas mit dem String nicht in Ordnung ist.

Lass dir mal in einer For-Schleife alle L&Fs ausgeben-> UIManager.getInstalledLookAndFeels().

Dann schreibst du einfach z.B.
String windows = UIManager.getInstalledLookAndFeels[2].getClassName()

(Bei mir ist es das dritte - der Index ist also 2.)
 

function

Bekanntes Mitglied
1. du rufst in der main methode den konstruktor der klasse auf, nimm die deklaration am anfang der klasse weg und setz ihn in den main teil, wird ja sonst eh nirgendwo benötigt....

2. klick mich
 
K

kph

Gast
ich glaube es lag am Eclispe habe mit Copy+Paste den mal in den JavaEditor eingefüt und da hat es funktioniert, sogar auf anhieb mit dem Look-And-Feel
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben