3

JButton でカスタム マウス オーバー イベントを作成しようとしています。私のJButtonは現在画像であるため、すべての境界線とアニメーションを削除する必要がありました。だから私はこれをしました:

btnSinglePlayer.setOpaque(false);
btnSinglePlayer.setContentAreaFilled(false);
btnSinglePlayer.setBorderPainted(false);

そして、それは画像を表示するだけで完璧に機能し、ボタンは実際に機能します. おそらくこれを行うことができる事前に構築された方法があるかどうか、または自分がやりたいことを行う方法をどのように学習するかを知りたいです。

より具体的には、マウスオーバーしたときに画像にさせたいのは、画像を少しだけ大きくすることです。

私はこれまでにこれらを試しましたが、何もしませんでした:

btnSinglePlayer.setRolloverIcon(singlePlayerButton);
btnSinglePlayer.setPressedIcon(singlePlayerButton);
4

2 に答える 2

3
  1. アイコンがAPIで実装されたメソッドを使用するため

  2. ButtonModel を ChangeListener で使用できます

  3. (デフォルトで) JButtons JComponentsMouse(Xxx)Listenerの場合、またはそのを使用する理由はありませんMouseEvent。これらのイベントはすべて実装され、正しく実装されています。

于 2013-03-14T08:25:37.363 に答える
2

別の方法として、 and override 、、およびmethod に登録することでこれを実現できMouseListenerます。例:JButtonmouseEntered()mouseExited()mousePressed()mouseReleased()

        final ImageIcon icon1 = new ImageIcon("tray.gif");
        final JButton button = new JButton(icon1);
        final int width = icon1.getIconWidth();
        final int height = icon1.getIconHeight();
        button.addMouseListener(new MouseAdapter()
        {
            public void mouseEntered(MouseEvent evt)
            {
                icon1.setImage((icon1.getImage().getScaledInstance(width + 10, height,Image.SCALE_SMOOTH)));
                //button.setIcon(icon1);
            }
            public void mouseExited(MouseEvent evt)
            {
                icon1.setImage((icon1.getImage().getScaledInstance(width , height,Image.SCALE_SMOOTH)));
            }
            public void mousePressed(MouseEvent evt)
            {
                icon1.setImage((icon1.getImage().getScaledInstance(width + 5, height,Image.SCALE_SMOOTH)));
            }
            public void mouseReleased(MouseEvent evt)
            {
                icon1.setImage((icon1.getImage().getScaledInstance(width + 10, height,Image.SCALE_SMOOTH)));
            }
        });
        button.setOpaque(false);
        button.setContentAreaFilled(false);
        button.setBorderPainted(false);
于 2013-03-14T08:09:31.410 に答える