簡體   English   中英

當鼠標光標懸停在JButton上時更改布爾值

[英]Changing value of boolean when mouse cursor hovers over a JButton

我有一個按鈕,當您將鼠標懸停在上面時,它會從黑色變為灰色,這是通過setRolloverIcon(ImageIcon); 當鼠標光標懸停在JButton上時,是否有任何簡單的方法可以使布爾值等於true,還是我必須使用MouseMotionListener來檢查鼠標光標的位置?

有什么簡單的方法可以使鼠標懸停在JButton上時使布爾值等於true

您可以將ChangeListener添加到ButtonModel ,例如

JButton.getModel().addChangeListener(new ChangeListener() {
    @Override
    public void stateChanged(ChangeEvent e) {
        ButtonModel model = (ButtonModel) e.getSource();
        if (model.isRollover()) {
            //do something with Boolean variable
        } else {

        }
    }
});

這是使用ButtonModel的示例:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class TestButtons {

    protected void createAndShowGUI() {
        JFrame frame = new JFrame("Test button");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JButton button = new JButton("Hello");
        button.getModel().addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent e) {
                if (button.getModel().isRollover()) {
                    button.setText("World");
                } else {
                    button.setText("Hello");
                }
            }
        });
        frame.add(button);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestButtons().createAndShowGUI();
            }
        });
    }

}

嘗試這個:

button.addMouseListener(new MouseListener() {

    public void mouseEntered(MouseEvent e) {
        yourBoolean = true;
    }
}

祝好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM