我看過很多帖子&嘗試過不同的方式來解決這個問題,但我仍然沒有得到我選擇的項目列表。這是我使用的代碼。獲取所選項目從Jlist
public List<String> getSelectedDeviceList()
{
return list;
}
/**
* Create the frame.
*/
public JLogicDesign(Frame frame, List<String> listDevices) {
super();
setTitle("Device Names");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 331, 316);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
jlistModel = new DefaultListModel();
for(String s: listDevices)
{
jlistModel.addElement(s);
}
final JList jlist = new JList(jlistModel);
jlist.setVisibleRowCount(5);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
btnOk = new JButton("OK");
btnOk.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
list = new ArrayList<String>();
Object[] values = jlist.getSelectedValues();
for(Object o: values)
{
list.add(o.toString());
}
dispose();
}
});
JList正在被正確填充。當我嘗試獲取所選項目時,我得到一個NPE。
這是另一個課堂,我打電話給上面的類提前
JLogicDesign jld = new JLogicDesign(f,listOfDevices);
devices = new ArrayList<String>();
devices = jld.getSelectedDeviceList();
謝謝!
只是簡單的評論,[JList.getSelectedValues()](http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html#getSelectedValues%28%29)已被棄用自java 1.7以來。您應該使用[JList.getSelectedValuesList()](http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html#getSelectedValuesList%28%29)。 – dic19
我安裝的java版本是1.6。 – SilentCoder
你在哪一行得到異常? –