通过单击列表中的项目填充文本区域

时间:2013-09-17 15:11:26

标签: java swing jtextarea jlist

enter image description here我正在尝试创建一个汽车GUI项目,如果我点击列表中的汽车名称,它将在附近的文本框中填入汽车信息。我尝试使用ListValueChanges方法,但这不起作用。

package vehicle;


import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class VehiclesGUI extends javax.swing.JFrame implements ListSelectionListener{

public VehiclesGUI() {
    initComponents();
    Vehicle[] vehicle = new Vehicle[4];
    vehicle[0] = new Altima();
    vehicle[1] = new Model_S();
    vehicle[2] = new Taurus();
    vehicle[3] = new Volt();
    vehicleList.setListData(vehicle);
    vehicleList.setCellRenderer(new VehicleListCellRenderer());
}
private void vehicleListValueChanged(javax.swing.event.ListSelectionEvent evt) {                                        
    Vehicle vehicle = (Vehicle)vehicleList.getSelectedValue();
    txtDisplay.setText(vehicle.getName());
    vehicleList.addListSelectionListener( this );
}
public static void main(String args[]) {
    /* Set the Nimbus look and feel */


    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new VehiclesGUI().setVisible(true);
        }

编辑:我实现了ListSelectionListener和assListSelectionListener,但文本框仍然显示txtDisplay

1 个答案:

答案 0 :(得分:5)

  

我尝试使用ListValueChanges方法,但这不起作用。

我没有看到您将监听器添加到JList的位置。你需要:

  1. 让您的类实现ListSelectionListener
  2. vehicleList.addListSelectionListener(this);
  3. 查看How to Write a List Selection Listener上的Swing教程以获取一个工作示例。教程示例是一种更好的方法,因为对于类来说实现监听器并不是一个好主意,但我只是简单地告诉你什么是错误的。