Hey, ich arbeite grade zum ersten mal mit einem GUI. Als LayoutManager habe ich MigLayout gewählt. Mein Ziel ist es, dass wenn ich in der JComboBox zum Beispiel Mensch auswähle, eine Instanz der Klasse Mensch erzeugt wird und auf dem Panel, welches sich auf dem Frame befindet dann auch die Nachricht aufplopt "Mensch erzeugt". Leider funktioniert das nicht... Kann mir jemand sagen wieso?
Vielen Dank schon mal!
Vielen Dank schon mal!
Java:
import javax.swing.*;
import java.awt.event.*;
public class App {
public static void main (String[] args) {
SwingUtilities.invokeLater(new Runnable() { // Erstellt einen (Swing)Thread
public void run() {
JFrame frame = new MainFrame( "Frame"); //Erzeugt Instanz von MainFrame und ruft Konstruktor auf
//Frame Eigenschaften
frame.setVisible(true);
frame.setSize( 350, 500 );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
});
}
}
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import net.miginfocom.swing.MigLayout;
@SuppressWarnings("serial")
public class MainFrame extends JFrame implements ActionListener {
public MainFrame(String title) {
super(title); // Ruft den Konstruktor der Superklasse (in diesem Fall Frame) auf und übergibt den Titel
String objekt;
String[] list = {"-","Lebewesen", "Mensch", "Superheld"};
JPanel c = new JPanel();
this.getContentPane().add(c);
c.setLayout(new MigLayout("", "[]", "[] [] [] []"));
JLabel begruessung = new JLabel("Hallo, was möchten Sie erzeugen?");
@SuppressWarnings({ "rawtypes" })
JComboBox liste = new JComboBox(list);
liste.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = (String) liste.getSelectedItem();
switch (s) {
case "-":
JLabel nichts = new JLabel("-");
c.add(nichts, "cell 0 1");
System.out.println("-");
break;
case "Lebewesen":
Lebewesen lebewesen1 = new Lebewesen();
JLabel lebewesen = new JLabel("Lebewesen erzeugt");
c.add(lebewesen, "cell 0 1");
System.out.println("Lebewesen");
break;
case "Mensch":
Mensch mensch1 = new Mensch();
JLabel mensch = new JLabel("Mensch erzeugt");
c.add(mensch, "cell 0 1");
System.out.println("Mensch");
break;
case "Superheld":
Superheld superheld1 = new Superheld();
JLabel superheld = new JLabel("Superheld erzeugt");
c.add(superheld, "cell 0 1");
System.out.println("Superheld");
break;
}
}
});
c.add(begruessung, "cell 0 0");
c.add(liste, "cell 0 1");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
Java:
public class Lebewesen {
protected boolean lebt;
public Lebewesen() {
}
public void atmen() {
lebt = true;
}
public void sterben () {
lebt = false;
}
}
Java:
public class Mensch extends Lebewesen {
protected String hautfarbe;
protected boolean sauberkeit;
public Mensch() {
hautfarbe = "unbekannt";
sauberkeit = false;
}
public void setHautfarbe(String _hautfarbe) {
hautfarbe = _hautfarbe;
}
public String getHautarbe() {
return hautfarbe;
}
public void waschen() {
sauberkeit = true;
}
public void schwitzen() {
sauberkeit = false;
}
public boolean getSauberkeit() {
return sauberkeit;
}
}
Zuletzt bearbeitet von einem Moderator: