Liste (JComboBox) wird im JFrame nicht angezeigt?
lima-city → Forum → Programmiersprachen → Java
button
code
container
fehler
folgender fehler
import
information
konvention
liste
methode
neuheit
normal mache
null
private string
quelle
statischen teile
string
swing
text
url
-
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
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
Hallo,
also wenn ich es "normal" mache, ohne das "extends" und "implements", dann klappts... Komischerweise funktioniert der Code bei normalen JButtons schon
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 -
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
-
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
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 -
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 wurdeprivate static JPanel Platte1;
zuprivate 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 -
Achso jetzt verstehe ich auch, warum immer das JFrame von den Buttons angezeigt wurde
Vielen Dank!!
Grüße
PS: Bitte schließen :-)
Beitrag zuletzt geändert: 14.2.2010 9:35:27 von showpage -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage