1

私の質問はです。リストコンポーネント内にボタンのようなコンポーネントを追加することは可能ですか (ボタンはクリックされたときにトリガーされる機能を持っています)?

この画像は、私が参照していることをよりよく説明しています:

http://2.bp.blogspot.com/-HThpKcgDyRA/URI_FdpffMI/AAAAAAAAAUI/SficZAPXaCw/s1600/1.png

4

2 に答える 2

3

はい、ただし、ハンドコーディングが必要であり、タッチでのみ機能します (フォーカスを割り当てることができないため)。

通常、これらのケースでは、リストを処理するのではなく、コンポーネント/コンテナー階層を使用することをお勧めしますが、これが常に実用的であるとは限りません。

重要なのは、常にリスト アクション リスナーを使用してイベントをトリガーすることです。したがって、リストのアクション処理コードにいるときは、ボタンによってトリガーされたかどうかを知りたいと思うでしょう...

GUI ビルダーを使用している場合、これは非常に簡単です。

Button b = ((GenericListCellRenderer)list.getRenderer()).extractLastClickedComponent();
if(b != null && b == myButton) {
   // your event code here for the button, the selected entry is list.getSelectedItem()/Index()
}

ハンドコーディングされたアプローチは、extractLastClickedComponent メソッドがないという 1 つの大きな注意点を除いて、かなり似ています。したがって、レンダラー内にコンポーネントがあると仮定すると、それにアクション リスナーを追加するだけです。アクションリスナー内でフラグを設定するだけです。

myButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ev) {
       buttonWasClicked = true;
    }
});

// within the list listener we do the exact same thing:
if(buttonWasClicked) {
   // for next time...
   buttonWasClicked = false;

   // your event code here for the button, the selected entry is list.getSelectedItem()/Index()
}
于 2013-10-19T05:11:18.507 に答える
0

はい!!!試してみてください、これはとても簡単です:....

http://www.codenameone.com/how-do-i---create-a-list-of-items-the-easy-way.html

http://www.codenameone.com/how-do-i---create-a-list-of-items-the-hard-way-gui-builder-renderer.html

于 2014-02-04T04:39:55.363 に答える