添加动作侦听器

时间:2013-02-24 13:05:28

标签: java eclipse swing jcombobox mixing

我创建了JListJTextField。在我的JList中,我写了几个选择选项,我希望所选的选项名称显示在JTextField中。

我需要在jTextField2动作侦听器中编写哪些代码,例如,如果我选择计算机,它将在JTextField中显示计算机

的ListModel

jList1Model = new DefaultComboBoxModel (new String[] { "Computer","Mouse","HDD"});

jList1 = new JList();
getContentPane().add(jList1);
jList1.setModel(jList1Model);
jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jTextField2 = new JTextField();

getContentPane().add(jTextField2);
jTextField2.setEditable(false);
jTextField2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    }
});

3 个答案:

答案 0 :(得分:2)

您需要添加ListSelectionListener哪些会因列表选择中的更改而触发:

  jList1.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent evt) {
            jList1ValueChanged(evt);
        }
    });

并在ListSelectionEvent

 private void jList1ValueChanged(ListSelectionEvent evt) {

    if(!jList1.getValueIsAdjusting())
    { 
    jTextField2.setText((String) jList1.getSelectedValue());
    }
  }

这是一个简短的例子:

import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListTest  {
    private JList jList1;
    private JPanel jPanel1;
    private JTextField jTextField2;
    private JFrame frame;


    public JListTest() {
        initComponents();
    }

    private void initComponents() {

        jPanel1 = new JPanel();
         jList1 = new JList();
        jTextField2 = new JTextField();
        frame =new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        jList1.setModel(new AbstractListModel() {
            String[] strings = { "Computer", "Mouse", "HDD" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jList1.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent evt) {
                jList1ValueChanged(evt);
            }
        });


        jTextField2.setText("jTextField1");
        jPanel1.add(jList1);
        jPanel1.add(jTextField2);
        frame.add(jPanel1);
        frame.pack();
        frame.setVisible(true);


    }

  private void jList1ValueChanged(ListSelectionEvent evt) {

    if(!jList1.getValueIsAdjusting())
    { 
    jTextField2.setText((String) jList1.getSelectedValue());
    }
}


    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new JListTest();
            }
        });
    }
}

答案 1 :(得分:1)

这个怎么样:

    jList1t.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
            jTextField2.setText((String) jList1.getSelectedValue());
        }
    });

(和jTextField2必须是final!)

答案 2 :(得分:-1)


javax.swing.JComboBox cboSelect = new javax.swing.JComboBox(); 
javax.swing.JTextField tfResult = new javax.swing.JTextField(); cboSelect.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Computer", "Mouse", "HDD" })); cboSelect.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { tfResult.setText(cboSelect.getSelectedItem().toString()); } });