2013-03-14 49 views
3

我正在嘗試在JButton上的事件上創建一個自定義鼠標。原因是我的JButton目前是一個圖像,所以我不得不刪除所有的邊界和動畫,而不是。所以我做到了這一點:用JButton鼠標滑過事件

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

而且,這是完美的只顯示圖像,而按鈕確實工作。我想知道是否有任何預先構建的方法可以做到這一點,或者我會如何去學習做我想做的事情。

更具體地說,當鼠標懸停時圖像要做的只是讓它稍大一點。

到目前爲止我嘗試了這些,並沒有採取任何行動:

btnSinglePlayer.setRolloverIcon(singlePlayerButton); 
btnSinglePlayer.setPressedIcon(singlePlayerButton); 
+1

真實場景rollOverEnabled爲真。你可能也想看看setRolloverSelectedIcon – MadProgrammer 2013-03-14 08:07:30

回答

3

作爲替代方案,您可以通過註冊MouseListenerJButton實現這一目標,並覆蓋mouseEntered()mouseExited()mousePressed()mouseReleased() method.For例子:

 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);