java - JList:显示存储以外的其他内容

标签 java linked-list 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);
}
}
}

但是还是不行。你能帮我吗?

最佳答案

您可以使用jList.setCellRenderer(),通过重写的方法传递new DefaultListCellRenderer()

getListCellRendererComponent(JList 列表,对象值,int 索引, boolean 值 isSelected, boolean 值 cellHasFocus)

value - 是插入到 JList 的对象,因此您可以存储它但显示另一个标签:

if (value instanceof File) {
   File file = (File) value;
   return super.getListCellRendererComponent(list, file.getName(), index, isSelected, cellHasFocus);
} else {
   return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}

关于java - JList:显示存储以外的其他内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10707851/

相关文章:

java - 如何解决无法启动组件[StandardEngine[Catalina].StandardHost[localhost]?

java - Java递归查找链表中的 'maximum'字符

java - 自定义一个 JList

java - IntelliJ IDEA - 将 .java 文件添加到项目依赖项

java - 从 Java 连接到 SockJS?

java - 不同物理机上 2 个 JVM 之间的 RMI

java - Java中删除双向链表中的节点

c - 我第一次使用链表。想要一些关于如何解决某些问题的批评和建议

java - 从 JList Java Swing 中删除元素

Java Swing 列表