问题描述:
我现在做了一个指令历史记录显示框,里面用的是JList控件,是逐行显示的.现在希望具有一个功能就是,双击JList里面的一个条目(也就是一行),可以把这一行的内容,添加到一个JTextField里面.这个功能类似一个拷贝的意思,也就是希望执行之前已经执行过的命令.
具体怎样实现,希望各位大虾能指导一下!万分感谢!
我现在做了一个指令历史记录显示框,里面用的是JList控件,是逐行显示的.现在希望具有一个功能就是,双击JList里面的一个条目(也就是一行),可以把这一行的内容,添加到一个JTextField里面.这个功能类似一个拷贝的意思,也就是希望执行之前已经执行过的命令.
具体怎样实现,希望各位大虾能指导一下!万分感谢!
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;public class JListSelectionTest { public static void main(String args[]) {
final JTextField field = new JTextField();
String labels[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
JFrame frame = new JFrame("Selecting JList");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JList selectionList = new JList(labels);
frame.getContentPane().add(field, BorderLayout.NORTH);
frame.getContentPane().add(new JScrollPane(selectionList), BorderLayout.CENTER); MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent mouseEvent) {
JList theList = (JList) mouseEvent.getSource();
if (mouseEvent.getClickCount() == 2) {
int index = theList.locationToIndex(mouseEvent.getPoint());
if (index >= 0) {
Object o = theList.getModel().getElementAt(index);
field.setText(o.toString());
}
}
}
};
selectionList.addMouseListener(mouseListener); frame.setSize(350, 200);
frame.setVisible(true);
}
}
给JList注册一个鼠标事件监听器即可。