,而不是試圖用一個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
,並且您需要實施mouseEntered
和mouseExited
。您可以在這些方法中來回更改標籤圖標。
運行這個例子
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);
}
}
});
}
}
放在哪裏上的NetBeans? – user3260589
在您的構造函數中創建圖標,然後執行上述操作。 –
請詳細解釋。我是一個非常緩慢的人。對不起 – user3260589