0

リストにアイテムを追加したい。私のリストは、最初にインストラクターによって自動的に呼び出されるinitComponent()によって初期化されます(私はNetBeansを使用しており、すべてのGUIコンポーネントはprogによって自動的に初期化されます)。

私の質問は:

  1. フレーム1があるとしましょう。このフレームには、クリックすると「画像を表示」するボタンがあります。
  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);

これらのアイテムを表示し、複数選択を許可し、マウスクリックイベントを追加するにはどうすればよいですか?

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 に答える