0

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

我的问题是:

  1. 假设我们有一个 Frame1,在这个框架中我们有一个“显示图像”按钮,当点击它时
  2. 打开具有 JList 的 Frame2 ...
  3. 通过Frame3成功添加图像列表...

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

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

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

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

4

2 回答 2

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

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

于 2012-05-25T11:33:12.310 回答
0

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

谢谢大家的回答,但我还有更多问题:1)我可以将 ToolTipText 添加到列表项中吗,我想添加图像路径 2)你对“我的接受率”是什么意思...

于 2012-05-25T09:28:44.690 回答