簡體   English   中英

將項目添加到JList

[英]adding items to JList

我想將項目添加到我的列表中。 我的列表首先由講師自動調用的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);
    }
} 

當我運行此代碼時,它將在最后一行中拋出NullPointerException images_List.setModel(listModel);

如何顯示這些項目,允許多選,添加鼠標單擊事件?

是的,您可以添加工具提示。 您只需在渲染器返回的組件上設置工具提示文本。 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()之前調用了將圖像設置為列表的函數,這就是引發異常的原因。

謝謝所有,但我還有其他問題:1)我可以將ToolTipText添加到列表項,我想添加圖像路徑2)您對“我的接受率”是什么意思...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM