首页 > 解决方案 > 如果单击它,如何保持前景颜色相同

问题描述

单击组件后,无论将来进行任何鼠标操作,都应保留 Color.BLUE 的前景。我怎样才能做到这一点?

这是我到目前为止的代码,我觉得我应该使用布尔变量来跟踪组件是否被点击,但不知道如何解决这个问题。非常感谢帮助。

这是我到目前为止的代码

public class IdeaMouseListener implements MouseListener {

    //instance      
    private JComponent x;

    //constructor
    public IdeaMouseListener(JComponent x){         
        this.x =x;          
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        x.setForeground(Color.BLUE);
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        x.setForeground(Color.LIGHT_GRAY);
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        x.setForeground(Color.WHITE);
    }

}

标签: javaswingmouselistener

解决方案


然后设置一个指示“单击”状态的标志,使用它来确定应该发生什么,例如

public class IdeaMouseListener implements MouseListener {

    //instance      
    private JComponent x;
    private boolean wasClicked = false;

    //constructor
    public IdeaMouseListener(JComponent x) {
        this.x = x;
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        x.setForeground(Color.BLUE);
        wasClicked = true;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        if (!wasClicked) {
            x.setForeground(Color.LIGHT_GRAY);
        }
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        if (!wasClicked) {
            x.setForeground(Color.WHITE);
        }
    }

}

推荐阅读