У меня есть компонент JList, и я хотел бы сохранить пути изображений, но отображать имя изображения, а не путь. У меня есть код, нажав кнопку открытия файла так:JList: отображение других вещей, кроме сохраненных
public void openButtonActionPerformed() {
int returnVal = fc.showDialog(null, "Open");
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile();
}
jList1.setCellRenderer(new JavaRenderer());
}
И:
class JavaRenderer extends DefaultListCellRenderer {
public JavaRenderer(){
//setOpaque(true);
}
public File file;
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean hasFocus) {
if (value instanceof File) {
File file = (file) value;
return super.getListCellRendererComponent(list, file.getName(), index, isSelected, hasFocus);
}else {
return super.getListCellRendererComponent(list, value, index, isSelected, hasFocus);
}
}
}
Но она по-прежнему не работает. Можете ли вы мне помочь?
Я отредактировал сообщение из-за ваших подсказок. Это не работает, и я знаю, что ошибка глупа, но я не могу ее найти. Можете ли вы мне помочь? – Doszi89
Вам нужно вызвать 'jList1.setCellRenderer (новый JavaRenderer());' только один раз, где вы инициализируете свой jList. Затем вы должны добавить файл в jList, используя listModel. См. [Добавление элементов в jList] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable) – alaster
Спасибо, на самом деле проблема была в 'File file = (файле) value;' потому что Я бездумно скопировал его, и вместо файла должен был Файл. Спасибо за помощь и терпение для новичков:) – Doszi89