Я написал код, который устанавливает изображение на JLabel. Путь к изображению получается из метода getSelectedValue() для выбранного элемента в JList.
Список Jlist заполнялся, когда пользователь нажимал кнопку поиска, вводя элемент для поиска в JTextField (например, searchTextField) после выбора любого параметра из трех элементов в JComboBox (например, typeChooserBox). Затем моя программа считывает сохраненные записи из файла «Records.txt» и разбивает на токены, чтобы сравнить правильный токен (на основе индекса typeChooserBox) с введенным пользователем значением (в searchTextField). Затем он заполняет JList.
Ниже приведен обработчик события для кнопки поиска, который заполняет JList.
public class searchButtonListener implements ActionListener{
public void actionPerformed(ActionEvent ev){
model.clear();//This empties the JList creating nullpoint Ex
int index=typeChooserBox.getSelectedIndex();
String toCompare=searchTextField.getText();
try {
File file = new File("Records.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line=null;
while((line=reader.readLine())!=null){
String[] tokens = line.split("/");
if( index==0){
if(tokens[0].equals(toCompare))
model.addElement(tokens[2]);}
if(index==1){
if(tokens[1].equalsIgnoreCase(toCompare))
model.addElement(tokens[2]);}
if(index==2){
if(tokens[3].contains(toCompare))
model.addElement(tokens[2]);}
}
}
catch(FileNotFoundException e2){
JOptionPane.showMessageDialog(null,"File not found", "Error",JOptionPane.ERROR_MESSAGE);
}
catch(IOException ex){
JOptionPane.showMessageDialog(null,"File not found", "Error",JOptionPane.ERROR_MESSAGE);
}
}
}
Когда я ищу запись. Впервые мой JList заполняется результатами поиска. Затем, когда я выбираю элемент из JList, он работает (устанавливает правильное изображение в JLabel), пока я не выполню новый поиск. Как только я нажимаю кнопку поиска (второй раз). Моя программа выдает nullPointExecption и перестает работать. Извините, я не включил SSCCE. Но если этой небольшой информации недостаточно, пожалуйста, дайте мне знать. :)
ХОРОШО, Я ПОНИМАЮ МОЮ ПРОБЛЕМУ... код model.clear() очищает весь элемент в списке при нажатии кнопки поиска. По этой причине в списке не будет выбранного элемента, что приведет к исключению нулевого указателя. Но как мне это решить. Могу ли я очистить все поле, но избежать нулевого значения, когда для JList вызывается getSectedValue().
Я пытался сделать это, но это все еще не сработало.
public class searchListListener implements ListSelectionListener {
String s;
String imagePath;
public void valueChanged(ListSelectionEvent evt){ try{
imagePath= (String) searchResult.getSelectedValue();
ImageIcon image = new ImageIcon(imagePath);
imageLabel.setIcon(image);
searchResult.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
catch(NullPointerException ne){
JOptionPane.showMessageDialog(null, "NullPointerException");
model.addElement(s);
searchResult.setSelectedValue(s, true);
}
finally{
s=imagePath;
}
}
}
public class typeChooserBoxListener implements ItemListener{
public void itemStateChanged(ItemEvent ev){
}
}
Я новичок в этом мире Java. Извините, если я не смог помочь вам помочь мне. :(
ne.printStackTrace()вывод, пожалуйста - person Marek Sebera   schedule 09.02.2012