-1

我创建了一个JListand JTextField。在我的JList我写了几个选择选项,我希望选择的选项名称出现在JTextField.

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

列表模型

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

3 回答 3

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();
            }
        });
    }
}
于 2013-02-24T13:35:32.523 回答
1

这个怎么样:

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

(并且 jTextField2 必须是final!)

于 2013-02-24T13:31:13.137 回答
-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()); } });
于 2013-02-24T13:16:08.103 回答