2

9 つの JLabels を配列で作成しました。そして、mouseClicked(MouseEvent src){...} のメソッドを持つ一般的なイベント リスナーがあります。

たとえば、label[0] がクリックされた場合は「Label-0 がクリックされました」と表示し、label[1] がクリックされた場合は「Label-1 がクリックされました」と表示したいとします。

これを実行できますか? はいの場合、どのように?

注:-カスタムの「id」プロパティを追加するという回答が見つかりましたが、最初に、デフォルトのメソッドが存在するかどうかを優先します。

4

2 に答える 2

3

ラベルを追加

 JPanel pnl = new JPanel(new FlowLayout());
 dd.add(pnl);
 addlistener();
 for (int i = 0; i < 10; i++) {
        pnl.add(lbl[i] = new JLabel("" + i));
        lbl[i].addMouseListener(listern);

 }

リスナー

public void mouseEnter(MouseEvent me) {
                System.err.println("Hi");
                me.getComponent();
                if(me.getSource() instanceof JLabel){
                    System.out.println("lable"+ ((JLabel)me.getSource()).getText());
                }
            }
于 2012-11-01T06:16:16.917 に答える
2

イベントのソースを配列内の各要素と比較して配列をループさせることができます...

for (int index = 0; index < myLabelArray.length; index++) {
    if (myLabelArray[index].equals(src.getSource())) {
        System.out.println("Label-" + index + " was clicked");
        break;
    }
}

または、各ラベルに「名前を付ける」こともできます。

JLabel[] myLabelArray = new JLabel[9];
for (int index = 0; index < 9; index++) {
    JLabel label = new JLabel("...");
    label.setName(Integer.toString(index));
    label.addMouseListener(commonMouseListener);
    myLabelArray[index] = label;
}

次に、マウスリスナーで...

public void mouseClicked(MouseEvent evt) {
    System.out.println("Label-" + ((JLabel)evt.getSource()).getName() + " was clicked");
}

Mapまたは、配列またはList...の代わりに使用できます。

于 2012-11-01T06:01:39.403 に答える