2014-02-05 48 views
0

我正在使用netbeans,並且當鼠標在按鈕上重疊時(當您即將點擊時),我有一個jLabel更改了圖標。我的代碼:在mouseMove上設置jLabel的圖標並隨時間變化圖像

private void BtnRoomsMouseMoved(java.awt.event.MouseEvent evt) {          
    jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/at/rosom.jpg"))); 
}  

只要鼠標仍然在按鈕上重疊,我想使它按時更改。這使它看起來像一個屏幕保護程序。 我腦子裏想的是我應該使用Thread.sleep(),但我對它的正確使用沒有任何想法。請幫忙。

回答

1

,而不是試圖用一個MouseListener只是使用按鈕翻轉功能

button.setIcon(icon); 
button.setRolloverEnabled(true); 

// create an instance of the RolloverIcon class when calling setRolloverIcon 
button.setRolloverIcon(rollOverIcon); 

無需定時器或任何東西。運行簡單的例子

import java.net.*; 
import java.util.logging.*; 
import javax.swing.*; 

public class ButtonRollover { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        ImageIcon rollover = new ImageIcon(new URL("https://trustcloud.com/images/homepage-icon-source-stackoverflow.png")); 
        ImageIcon icon = new ImageIcon(new URL("http://www.pixelearth.net/images/icons/stackoverflow.png")); 

        JButton button = new JButton(icon); 
        button.setRolloverEnabled(true); 
        button.setRolloverIcon(rollover); 

        JOptionPane.showMessageDialog(null, button, "Rollover", JOptionPane.PLAIN_MESSAGE); 
       } catch (MalformedURLException ex) { 
        Logger.getLogger(ButtonRollover.class.getName()).log(Level.SEVERE, null, ex); 
       } 
      } 

     }); 
    } 
} 

編輯

通過這個BtnRoomsMouseMoved的外觀,它看起來像你使用的是MouseMotionListener時,你應該使用MouseListener。右鍵點擊該按鈕,而不是選擇MouseMotion,請選擇Mouse,並且您需要實施mouseEnteredmouseExited。您可以在這些方法中來回更改標籤圖標。

運行這個例子

import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.net.*; 
import java.util.logging.*; 
import javax.swing.*; 

public class ButtonRollover { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        final ImageIcon rollover = new ImageIcon(new URL("https://trustcloud.com/images/homepage-icon-source-stackoverflow.png")); 
        final ImageIcon icon = new ImageIcon(new URL("http://www.pixelearth.net/images/icons/stackoverflow.png")); 

        final JLabel label = new JLabel(icon); 

        JButton button = new JButton("Change Image"); 
        button.addMouseListener(new MouseAdapter(){ 
         public void mouseEntered(MouseEvent e) { 
          label.setIcon(rollover); 
         } 
         public void mouseExited(MouseEvent e) { 
          label.setIcon(icon); 
         } 
        }); 

        JPanel panel = new JPanel(); 
        panel.add(label); 
        panel.add(button); 

        JOptionPane.showMessageDialog(null, panel, "Rollover", JOptionPane.PLAIN_MESSAGE); 
       } catch (MalformedURLException ex) { 
        Logger.getLogger(ButtonRollover.class.getName()).log(Level.SEVERE, null, ex); 
       } 
      } 
     }); 
    } 
} 
+0

放在哪裏上的NetBeans? – user3260589

+0

在您的構造函數中創建圖標,然後執行上述操作。 –

+0

請詳細解釋。我是一個非常緩慢的人。對不起 – user3260589