0

テキストフィールドにテキストを設定するアクションを引き起こすコンボボックスがあるという問題があります。コードは次のとおりです。

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));
}

textField には何も表示されません。私が間違っていることについて何か考えはありますか?

再フォーマットして、過去のスレッドに追いつきました。

4

1 に答える 1

0

アクションリスナーを呼び出してTextFieldのテキストを設定するには、ComboBoxでアクションを生成する必要があります。ComboBoxでアイテムを選択してみてください

また、comboBox.getSelectedItem()選択したアイテムの変更以外のイベントがある場合(たとえば、選択が行われる前にイベントが生成される場合)、nullを返す場合があります。その場合、student + "is printed."insideを呼び出すとstudentOutputString()nullポインター例外がスローされます

于 2012-04-11T21:01:58.317 に答える