0

ImageIcon と、現在の画像をクリックして別の画像に置き換える addMouseListener を使用して、JFrame の画像からボタンを作成しようとしています。

static JPanel jp = new JPanel();
final JLabel jl = new JLabel();
final JFrame jf = new JFrame();

    ImageIcon image = new ImageIcon("image1.jpg");
    jl.setIcon(image);
    jp.add(jl);
    jf.add(jp); 
    jf.validate();

    JLabel button = new JLabel(image);
    button.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            jl.setIcon( null );
            ImageIcon image = new ImageIcon("image2.jpg");
            jl.setIcon(image);
        }
    });

GUIはimage1.jpgで表示されますが、ボタンがまったく機能せず、image1からimage2への置き換えが機能するかどうかもテストできません。ウィンドウに表示された image1.jpg をクリックしようとしても、GUI は何もしません。

編集: JLabel 変数を最終的なものに調整しました。他の同様の質問は、このメソッドが機能するはずであることを暗示していますが、コードの何が問題なのかわかりません。

4

1 に答える 1

0

ActionListener が JLabel でも動作するかどうかはよくわかりません。

いいえ、ActionListener を JLabel に追加することはできません。より簡単な方法は、JButton を JLabel のように見せることです。その後、ボタンに ActionListener を追加できます。

JButton button = new JButton(...);
button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.addActionListener(...);

しかし、ボタンはまったく機能しません

同じマウス ポイントに対して mousePressed と mouseReleased を受け取ると、マウス クリックが生成されます。そのため、マウスを少し動かしてもイベントは生成されません。代わりに、mousePressed() イベントをリッスンします。

于 2013-08-17T00:04:24.733 に答える