kostenloser Webspace werbefrei: lima-city


Liste (JComboBox) wird im JFrame nicht angezeigt?

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    showpage

    showpage hat kostenlosen Webspace.

    Hallo zusammen,
    der Titel besagt ja schon alles. Ich habe gerade was neues mit dem ActionListener herausgefunden, aber nun wird das ganze nicht mehr angezeigt? Liegt es am Code oder nur an meinem PC :confused:

    Hier ist mal der Code:

    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JComboBox;
    
    public class Listener_JCombo extends JFrame implements ActionListener {
    
    	private static JPanel Platte1;
    	private JComboBox Liste;
    	private String Text[] = { "1.", "2.", "3." };
    	
    	public Listener_JCombo() {
    		
    		super("JComboBox mit ActionListener");
    		
    		Platte1 = new JPanel();
    		Platte1.setLayout(new FlowLayout());
    		
    		Liste = new JComboBox(Text);
    		Liste.addActionListener(this);
    		
    		Platte1.add(Liste);
    		setContentPane(Platte1);
    		
    		
    		
    	}
    	
    	public void actionPerformed(ActionEvent event) {
    		
    		Object Quelle = event.getSource();
    		 
    		if (Liste != Quelle) 
    			return;
    		for (int i = 0; i < 3; i++)
    			if ( Liste.getSelectedIndex()== i)
    			      JOptionPane.showMessageDialog(null, Text[i]);
    		
    		
    	}
    	
    	public static void main(String[] args) {
    		
    		Listener_Button g = new Listener_Button();
    		g.setSize(300,300);
    		g.setVisible(true);
    		
    	}
    
    }


    Vielen Dank!!

    Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Sehe ich das falsch, oder hast du deine Liste überhaupt nicht in die GUI eingefügt?
    Du machst hier einen Frame namens "Listener_Button" sichtbar. Allerdings existiert der in deinem Code gar nicht. Wenn nichts angezeigt wird, hat nichts mit dem Listener zu tun, sondern mit dem Frame. Nur gibst du uns keine Informationen darüber.
    Denke auch daran, der Liste den Listener hinzuzufügen.
  4. Autor dieses Themas

    showpage

    showpage hat kostenlosen Webspace.

    Hallo,
    also wenn ich es "normal" mache, ohne das "extends" und "implements", dann klappts... :-( Komischerweise funktioniert der Code bei normalen JButtons schon :confused::confused::confused:

    Wenn ich es so mache wie bei den Buttons kommt folgender Fehler:
    Exception in thread "main" java.lang.NullPointerException
    	at java.awt.Container.addImpl(Unknown Source)
    	at java.awt.Container.add(Unknown Source)
    	at javax.swing.JFrame.addImpl(Unknown Source)
    	at java.awt.Container.add(Unknown Source)
    	at NeuesZeugs.Listener_JCombo.main(Listener_JCombo.java:50)


    Die "Neuheit" hierbei ist das g.add(Platte1); :
    public static void main(String[] args) {
    		
    		Listener_Button g = new Listener_Button();
    		g.setSize(300,300);
    		g.setVisible(true);
    		g.add(Platte1);
    		
    	}


    Vielen Dank!

    Grüße
  5. Moin,

    Da Du objektorientiert arbeitest, solltest Du die statischen Teile rausnehmen.

    Ich hab's mal entsprechend angepasst:
    http://java-lima.pastebin.com/f201950cb

    Auch die Bezeichnungen der Variablen habe ich mal angepasst,
    damit es nach den Code-Conventions ausschaut.

    Gruß,
    Pawnee

  6. Autor dieses Themas

    showpage

    showpage hat kostenlosen Webspace.

    Hi,
    könntest du eventuell meinen Fehler noch Erläutern, weil ich ihn in nächster Zeit gerne vermeiden würde :-)

    Ich habe nun alles genau so übernommen, wie bei dir, aber nun kommt zwar kein Fehler mehr, aber das Frame fehlt :-(

    Hier ist nochmals der Code :confused:
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JComboBox;
    
    public class Listener_JCombo extends JFrame implements ActionListener {
    
    	private JPanel Platte1;
    	private JComboBox Liste;
    	private String Text[] = { "1.", "2.", "3." };
    	
    	public Listener_JCombo() {
    		
    		super("JComboBox mit ActionListener");
    		
    		Platte1 = new JPanel();
    		Platte1.setLayout(new FlowLayout());
    		
    		Liste = new JComboBox(Text);
    		Liste.addActionListener(this);
    		
    		Platte1.add(Liste);
    		
    		setContentPane(Platte1);
    		
    		
    		
    	}
    	
    	public void actionPerformed(ActionEvent event) {
    		
    		Object Quelle = event.getSource();
    		 
    		if (Liste != Quelle) 
    			return;
    		for (int i = 0; i < 3; i++)
    			if ( Liste.getSelectedIndex()== i)
    				
    			JOptionPane.showMessageDialog(null, Text[i]);
    		
    		
    	}
    	
    	public static void main(String[] args) {
    		
    		Listener_Button g = new Listener_Button();
    		g.setSize(300,300);
    		g.setVisible(true);
    		
    	}
    
    }


    Vielen Dank!

    Grüße
  7. Moin,

    der Fehler ist ziemlich simpel.
    Du hast statische Variablen innerhalb einer Klasse benutzt,
    mit denen Du nicht arbeiten solltest, weil diese den OOP-Ansatz zerstören.

    Demnach wurde
    private static JPanel Platte1;

    zu
    private JPanel Platte1;

    Was static und non-static darstellen, kannst Du in jedem Java-Handbuch bzw. Online-Tutorial nachlesen.

    Dass Dein Frame nicht dargestellt wird, liegt einfach daran,
    dass Deine Klasse "Listener_JCombo" heißt, Du in der main Methode aber "Listener_Button" benutzen willst.
    Entsprechend sollte eine Fehlermeldung auftreten.

    Du musst also nur die main Methode korrekt abändern.

    Gruß,
    Pawnee

    PS: Java Code Konventionen sollten eingehalten werden.

    Beitrag zuletzt geändert: 13.2.2010 16:41:40 von pawnee
  8. Autor dieses Themas

    showpage

    showpage hat kostenlosen Webspace.

    Achso jetzt verstehe ich auch, warum immer das JFrame von den Buttons angezeigt wurde :biggrin:

    Vielen Dank!!

    Grüße

    PS: Bitte schließen :-)

    Beitrag zuletzt geändert: 14.2.2010 9:35:27 von showpage
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!