2012-04-11 8 views
0

Ich habe ein Problem, wo ich eine ComboBox habe, die eine Aktion verursacht, die den Text in einem Textfeld festlegt. Hier ist der Code:Windowbuilder Textfeld funktioniert nicht mit Combobox

public class Main extends JFrame implements ActionListener{ 
    private JPanel contentPane; 
    private JTextField textField; 
    private JComboBox comboBox; 

    //public static void main - nothing much in it except Main frame = new Main(); 

    public Main() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 563, 407); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 
    comboBox.addActionListener(frame); 
    textField = new JTextField(); 
    textField.setBounds(42, 99, 445, 235); 
    textField.setText("HERE"); 
    contentPane.add(textField); 
    textField.setColumns(10); 
    comboBox = new JComboBox(); 
    comboBox.setModel(new DefaultComboBoxModel(new String[] {"Bob", "Dan ", "Emily"})); 
    comboBox.setBounds(42, 48, 140, 29); 
    contentPane.add(comboBox); 

    /*ONE WAY OF DOING IT: comboBox.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     textField.setText(studentOutputString((String)comboBox.getSelectedItem())); 
     textField.setText("BLAH"); 
    } 
});*/ 
} 
    public String studentOutputString(String student){ 
     String s = student + "is printed."; 
     return s; 
} 

    public void actionPerformed(ActionEvent e) { 
     comboBox = (JComboBox) e.getSource(); 
     String selectedStudent = (String) comboBox.getSelectedItem(); 
     textField.setText(studentOutputString(selectedStudent)); 
} 

Nichts zeigt sich in der TextField. Irgendeine Idee darüber, was ich falsch mache?

Ich habe es neu formatiert und meine früheren Threads eingeholt.

+0

verfassen [SSCCE] (http://sscce.org/) – Dave

+0

@ Dave werfen - zur Kenntnis genommen. Außerdem wählte ich Antworten auf einige Fragen, die unbeantwortet blieben. Hatte einige der Beiträge noch nicht gesehen. – user963070

Antwort

0

Sie müssen eine Aktion für die ComboBox generieren, damit der Aktionslistener aufgerufen und der Text des TextFields festgelegt wird. Versuchen Sie, ein Element in der ComboBox auszuwählen

Außerdem gibt comboBox.getSelectedItem() möglicherweise null zurück, wenn neben der Änderung ausgewählter Elemente andere Ereignisse vorhanden sind (z. B. wird ein Ereignis generiert, bevor eine Auswahl getroffen wurde). In diesem Fall Ihr Anruf student + "is printed." innerhalb studentOutputString() eine Null-Zeiger-Ausnahme

+0

Ich habe versucht, die Werte in der Combobox vergeblich zu ändern. Ich weiß nicht, was ich tun soll. – user963070

+0

nicht _changing_ die Werte in der Combobox, aber _selecting_ und item in der Combobox, wenn die Anwendung ausgeführt wird. – Attila

+0

Ja, das habe ich gemeint. – user963070

Verwandte Themen