将项添加到JList

时间:2012-05-25 09:03:48

标签: java swing jlist listitem

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

我的问题是:

  1. 让我们说我们有一个Frame1,在这个框架中我们有一个Button“show images”,点击它时
  2. 打开具有JList ...
  3. 的Frame2
  4. 图像列表通过Frame3成功添加...
  5. 下面是我的代码,我想在列表中列出所有图片:

    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);
        }
    } 
    

    当我运行此代码时,它会在最后一行images_List.setModel(listModel);

    中抛出NullPointerException

    如何显示这些项目,允许多项选择,添加鼠标点击事件?

2 个答案:

答案 0 :(得分:3)

是的,您可以添加工具提示。您只需在渲染器返回的组件上设置工具提示文本。 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;
                }

您是否也可以使用这些新问题更新您的问题,因为您的“新问题答案”将浮动到底部

答案 1 :(得分:0)

我发现了我的大错:( :(我调用了函数,在调用initComponent()之前将图像设置到列表中,这就是抛出异常的原因..

一切都是为了你的答案,但我还有更多问题: 1)我可以将ToolTipText添加到列表项,我想添加图像路径 2)你对“我的接受率”是什么意思......