将项目添加到JList

问题描述:

我想将项目添加到我的列表中。我的列表首先由initComponent()初始化,由教师自动调用(我使用的是NetBeans,所有GUI组件都由prog自动初始化)。将项目添加到JList

我的问题是:

  1. 让我们说,我们有一个帧1,在这个框架,我们有一个按钮“显示图片”,当点击它
  2. 开放式2其中有JList的...
  3. 图像列表通过帧3成功添加...

下面是我的代码,我想列出所有的图像在我的名单:

private void setImagesToList() 
{ 
    ***//bLayer is my Business Layer and _getNomOfSelectedImg() returns number of 
    //images.*** 

    int imagesCount = bLayer._getNomOfSelectedImg(); 

    ***// through my searches i fount that i've to create ListModel to hold my items*** 
    DefaultListModel listModel = new DefaultListModel(); 

    if (imagesCount > 0) // there is/are image(s) 
    { 
     for(int i=0; i < imagesCount ; i++) 
     { 
      // ***i want to add image name and tooltip (image path) *** 
      String imgName = bLayer._getImageName(i); 
      String imgPath = bLayer._getImagePath(i); 
      listModel.add(i, imgName); 
      break; 
     } 
     images_List.setModel(listModel); 
    } 
} 

当我运行这段代码会抛出NullPointerException异常在最后一行images_List.setModel(listModel);

怎样做才能显示这些项目,允许多选,将鼠标点击事件?

+1

这个例外很明显:你得到一个NPE,因为'images_List'为空。你在哪里初始化它的价值? – assylias

+0

@Eng巴斯马,请提高您的接受率。这将反过来增加获得好答案的变化。 – Hidde

是的,你可以添加工具提示。您只需在渲染器返回的组件上设置工具提示文本即可。 JList将使用这些组件工具提示来确定正确的工具提示文本。这可以在JList#getTooltipText执行当中我复制了相关部分

Component rComponent = r.getListCellRendererComponent(
         this, getModel().getElementAt(index), index, 
         lsm.isSelectedIndex(index), 
         (hasFocus() && (lsm.getLeadSelectionIndex() == 
             index))); 

      if(rComponent instanceof JComponent) { 
       MouseEvent  newEvent; 

       p.translate(-cellBounds.x, -cellBounds.y); 
       newEvent = new MouseEvent(rComponent, event.getID(), 
              event.getWhen(), 
              event.getModifiers(), 
              p.x, p.y, 
              event.getXOnScreen(), 
              event.getYOnScreen(), 
              event.getClickCount(), 
              event.isPopupTrigger(), 
              MouseEvent.NOBUTTON); 

       String tip = ((JComponent)rComponent).getToolTipText(
              newEvent); 

       if (tip != null) { 
        return tip; 
       } 

你能不能也用这些新的问题更新您的问题可以看出,作为您的回答新问题“会浮到底部

我找到了我极大的错误:(:(我叫其设定的图像列表调用initComponent(前)的功能,这就是为什么抛出异常..

日Thnx所有的回答,但我有更多的问题: 1)我可以添加ToolTipText到列表项目,我想添加图像路径 2)你是什么意思关于“我的接受率”...