我创建了JList
和JTextField
。在我的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) {
}
});
答案 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());
}
});