Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用不同对象加载JList数据的JList中显示图像图标_Java_Swing_Jlist_Listcellrenderer_Imageicon - Fatal编程技术网

Java 在使用不同对象加载JList数据的JList中显示图像图标

Java 在使用不同对象加载JList数据的JList中显示图像图标,java,swing,jlist,listcellrenderer,imageicon,Java,Swing,Jlist,Listcellrenderer,Imageicon,我有一个JList,它是通过其他地方的字符串数组列表填充的,我现在想为同一个列表显示一个保存在我的目录某处的ImageIcon。现在,我想为添加到列表中的任何项目(或当前列表中的任何项目)显示相同的图标 我的列表应该如下所示:图标学生姓名。。。 图标学生姓名 问题(图像图标显示正确的高度,正在捕获,但在运行时未显示在列表中) 下面是我的操作侦听器,它将数据添加到列表中 public class StudentListener implements ActionListener{ pri

我有一个JList,它是通过其他地方的字符串数组列表填充的,我现在想为同一个列表显示一个保存在我的目录某处的ImageIcon。现在,我想为添加到列表中的任何项目(或当前列表中的任何项目)显示相同的图标

我的列表应该如下所示:图标学生姓名。。。 图标学生姓名

问题(图像图标显示正确的高度,正在捕获,但在运行时未显示在列表中)

下面是我的操作侦听器,它将数据添加到列表中

 public class StudentListener implements ActionListener{

   private Main_Menu menu;
   private ArrayList<String> arrayList = new ArrayList<String>();;
   Iterator iterator = arrayList.iterator();
   JList sList;
   Map<Object, Icon> icons = new HashMap<Object, Icon>();        
   /**
    * 
    * @param menu the referenced menu from our main menu
    */
   public StudentListener(Main_Menu menu){
   this.menu = menu;       
   }

   @Override
    public void actionPerformed(ActionEvent ae) {

    Icon iCon = new ImageIcon("/Project/src/Images/1312046124_picture.png"); // icons
    int iHeight = iCon.getIconHeight();
       icons.put("name", iCon);           
      //add all the students to our List 
          try {
                StudentModel = new Student_Model();
            } catch (SQLException ex) {
                Logger.getLogger(Student_Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
    //arrayList = StudentModel.getStudents(); // modify to use an arrayList of string
    arrayList.add("John");
    arrayList.add("Smith");
    iterator = arrayList.iterator();
    while(iterator.hasNext()){          
       System.out.println(iterator.next().toString());
    }
    sList = this.menu.getStudentList();
    sList.setListData(arrayList.toArray());
    sList.setFont(new Font("Arial", Font.BOLD, 14));
    System.out.println("height of icon " + iHeight); // displays the correct height
    sList.setCellRenderer(new IconListRenderer(icons));       
   }   
  }
公共类StudentListener实现ActionListener{
私有主菜单;
私有ArrayList ArrayList=新ArrayList();;
迭代器迭代器=arrayList.Iterator();
JList滑岩;
映射图标=新的HashMap();
/**
* 
*@param menu从主菜单中引用的菜单
*/
public StudentListener(主菜单){
this.menu=菜单;
}
@凌驾
已执行的公共无效行动(行动事件ae){
图标图标=新的图像图标(“/Project/src/Images/1312046124_picture.png”);//图标
int iHeight=iCon.getIconHeight();
图标。放置(“名称”,图标);
//把所有的学生都加到我们的名单上
试一试{
StudentModel=新学生_模型();
}catch(SQLException-ex){
Logger.getLogger(Student\u Controller.class.getName()).log(Level.SEVERE,null,ex);
}
//arrayList=StudentModel.getStudents();//修改以使用字符串的arrayList
arrayList.add(“John”);
arrayList.add(“史密斯”);
迭代器=arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString());
}
sList=this.menu.getStudentList();
sList.setListData(arrayList.toArray());
sList.setFont(新字体(“Arial”,Font.BOLD,14));
System.out.println(“图标高度”+iHeight);//显示正确的高度
sList.setCellRenderer(新的IconListRenderer(图标));
}   
}
IconListCellRenderer

public class IconListRenderer
extends DefaultListCellRenderer {

private Map<Object, Icon> icons = null;

public IconListRenderer(Map<Object, Icon> icons) {
    this.icons = icons;
}

@Override
public Component getListCellRendererComponent(
    JList list, Object value, int index,
    boolean isSelected, boolean cellHasFocus) {

    // Get the renderer component from parent class

    JLabel label =
        (JLabel) super.getListCellRendererComponent(list,
            value, index, isSelected, cellHasFocus);

    // Get icon to use for the list item value

    Icon icon = icons.get(value);

    // Set icon to display for value

    label.setIcon(icon);
    return label;
}
  }
公共类IconListRenderer
扩展DefaultListCellRenderer{
私有地图图标=空;
公共图标列表渲染器(地图图标){
这个图标=图标;
}
@凌驾
公共组件GetListCellRenderComponent(
JList列表、对象值、整数索引、,
布尔值(已选择,布尔单元格已聚焦){
//从父类获取渲染器组件
JLabel标签=
(JLabel)super.getListCellRenderComponent(列表,
值、索引、isSelected、cellHasFocus);
//获取用于列表项值的图标
Icon=icons.get(值);
//设置要为值显示的图标
label.setIcon(图标);
退货标签;
}
}

JList
有方法如何向链接添加图标/图像图标,例如关于包含
JList
的链接,另一个示例和
JList
有方法如何向链接添加图标/图像图标,例如关于包含
JList
的链接,另一个示例和您仍然没有发布SSCCE!我们没有访问你的StuentModel或IconListRenderer的权限。我们甚至不需要StuentModel来进行SSCCE。你所需要做的就是在你的ArrayList中硬记录一些学生的名字。我猜问题是渲染器。如果你需要帮助,请发布一个合适的SSCCE。我厌倦了每次你发布问题时都提醒你。我必须同意camickr:如果没有一些小的工作示例,我们真的无法猜测您的代码为什么无法工作。如果您真的希望提供SSCCE,这取决于您自己——您需要我们的帮助吗?@Camickr,不需要设置动画。我很快就解决了这个问题,并认为可能只是没有正确使用ListCellRenderer属性,这就是原因我发布了引用代码。我将更新我的帖子以获得更好的回复。@Warz,显然我确实需要设置动画,因为你仍然没有意识到你没有发布正确的问题是在浪费我们的时间,这将提供解决问题所需的所有信息。到目前为止,你已经浪费了21个人花时间查看的时间问题。根据定义,当你遇到问题时,你不知道是什么导致了问题,所以你不知道什么代码与post相关,这就是为什么你通过创建SSCCE来缩小问题的范围。@Warz,你仍然没有发布SSCCE。更新的代码没有帮助。当我们无法执行程序时,添加硬编码数据仍然没有帮助没有帮助。硬编码数据意味着您包装一个帧并显示列表,这样我们就可以看到您在谈论什么以及渲染器实际在做什么。您仍然在浪费每个人的时间。您仍然没有发布SSCCE!我们无法访问您的StuentModel或IconListRenderer。我们甚至不需要StuentModel进行SSCCE。您需要的就是d要做的是在你的ArrayList中硬记录一些学生的名字。我猜问题出在渲染器上。如果你需要帮助,请发布一个合适的SSCE。我厌倦了每次你发布问题时都提醒你。我必须同意camickr的观点:如果没有一些小的工作示例,我们真的无法猜测为什么你的代码不能工作。这取决于你,真的吗希望提供一个SSCCE--您需要我们的帮助吗?@Camickr,不需要设置动画。我很快就解决了这个问题,并认为我可能只是没有正确使用ListCellRenderer属性,这就是我发布引用代码的原因。我将更新我的帖子以获得更好的响应。@Warz,显然我需要设置动画,因为你仍然没有理解这样一个概念,即你没有发布一个适当的问题是在浪费我们的时间,因为它将提供解决问题所需的所有信息。到目前为止,你已经浪费了21个人的时间,他们花时间查看问题。根据定义,当你遇到问题时,你不知道是什么原因导致了问题,所以你不知道代码是什么莱瓦