0

スクリプトに問題があります。ボタンが押されたときに新しい画像(別の画像が表示されています)を再描画したいのですが、ボタンは何もしません...

ActionListener one = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panel2.revalidate();
                panel2.repaint();
            }
        };

        btn1.addActionListener(one);



        JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());

        panel2.add(lab1);
        panel2.add(test1);
        panel2.add(pn5);
        panel2.add(pn1);
        panel2.add(btn1);
4

1 に答える 1

5

内部actionPerformedであなたはあなたを手に入れてそれJLabelを呼びsetIcon()、新しいイメージを渡す必要があります。

JLabelを取得する方法はいくつかあります。1つは、メソッドfinalのスコープ内のどこかにJLabelを含むように宣言された変数があることを確認する方法、もう1つは(非推奨)actionPerformed内部からJLabelを見つける方法です。panel2

ActionListenerその目的のために本格的なクラスを宣言する場合は、コンストラクターを介してそれを渡すこともできます。

編集

final JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());

ActionListener one = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // Get 'anotherIcon' from somewhere, presumably from a similar
        // place to where you retrieved the initial icon
        test1.setIcon(anotherIcon);
    }
};

btn1.addActionListener(one);

panel2.add(lab1);
panel2.add(test1);
panel2.add(pn5);
panel2.add(pn1);
panel2.add(btn1);
于 2011-01-26T03:16:09.530 に答える