Hinzufügen eines Action -Hörers zu einem jcombobox
-
27-09-2019 - |
Frage
Ich möchte nur die ausgewählte Option im Kombinationsfeld in ein Textfeld ausdrucken. Bitte erklären Sie, was los ist, weil ich es vervollständigen und im Unterricht erklären muss. Jede Hilfe wäre sehr geschätzt. Danke im Voraus.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class App3 extends JFrame implements ActionListener
{
private JPanel boxPanel,textPanel;
private JLabel selectName,selectedName;
private JComboBox nameCombo;
private JTextField valueOfSelectedName;
private Container c;
public App3()
{
super("Combo example");
setup();
setSize(200,200);
setLocation(50,50);
show();
}
public void setup()
{
c = getContentPane();
boxPanel = new JPanel();
c.add(boxPanel,BorderLayout.NORTH);
selectName = new JLabel("Select Name : ");
selectedName = new JLabel("The selected Name : ");
String[] names = {"Ramila","Hashan","Shaad","Gus","Mahasen","Hasaru","Shabba"};
nameCombo = new JComboBox(names);
nameCombo.addActionListener(this);
valueOfSelectedName = new JTextField(10);
boxPanel.add(selectName);
boxPanel.add(nameCombo);
c.add(textPanel,BorderLayout.CENTER);
textPanel.add(selectedName);
textPanel.add(valueOfSelectedName);
}
public void actionPerformed(ActionEvent e)
{
JComboBox nameCombo = (JComboBox)e.getSource();
String newSelection = (String)nameCombo.getSelectedItem();
valueOfSelectedName.setText(newSelection);
}
public static void main(String args[])
{
App3 a = new App3();
}
}
Ich bekomme keine Kompilierungszeitfehler, ich bekomme diese Fehler, wenn ich sie ausführe.
Exception in thread "main" java.lang.NullPointerException at java.awt.Container.addImpl(Container.java:1041) at java.awt.Container.add(Container.java:927) at App3.setup(App3.java:42) at App3.(App3.java:16) at App3.main(App3.java:58) Process completed.
Lösung
private JPanel boxPanel,textPanel;
...
textPanel = new JPanel();
Sie haben das JPanel -Objekt nicht erstellt. Erstellen Sie das Objekt und alles sollte gut funktionieren
Andere Tipps
TextPanel ist null, wenn Sie versuchen, es dem Inhaltsbereich hinzuzufügen:
c.add(textPanel, BorderLayout.CENTER);
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class App3 extends JFrame implements ActionListener
{
private JPanel boxPanel,textPanel;
private JLabel selectName,selectedName;
private JComboBox nameCombo;
private JTextField valueOfSelectedName;
private Container c;
public App3()
{
super("Combo example");
setup();
setSize(200,200);
setLocation(50,50);
show();
}
public void setup()
{
c = getContentPane();
boxPanel = new JPanel();
c.add(boxPanel,BorderLayout.NORTH);
selectName = new JLabel("Select Name : ");
selectedName = new JLabel("The selected Name : ");
String[] names = {"Ramila","Hashan","Shaad","Gus","Mahasen","Hasaru","Shabba"};
nameCombo = new JComboBox(names);
nameCombo.addActionListener(this);
valueOfSelectedName = new JTextField(10);
boxPanel.add(selectName);
boxPanel.add(nameCombo);
textPanel = new JPanel(); // panel is not init that why its give error
c.add(textPanel,BorderLayout.CENTER);
textPanel.add(selectedName);
textPanel.add(valueOfSelectedName);
}
public void actionPerformed(ActionEvent e)
{
JComboBox nameCombo = (JComboBox)e.getSource();
String newSelection = (String)nameCombo.getSelectedItem();
valueOfSelectedName.setText(newSelection);
}
public static void main(String args[])
{
App3 a = new App3();
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow