java - 如果单击它,如何保持前景颜色相同
问题描述
单击组件后,无论将来进行任何鼠标操作,都应保留 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);
}
}
解决方案
然后设置一个指示“单击”状态的标志,使用它来确定应该发生什么,例如
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);
}
}
}
推荐阅读
- html - 为什么我的下拉按钮菜单和背景图像不起作用
- emacs - Emacs+Slime 低级 lisp 异常退出,代码为 5
- node.js - 如何使用react和express js通过objloader(三个js)导入json对象
- apache-spark - 从 Spark Sql 写入 Hive 表时出错
- python - 使用 @properties 提高 AttributeError 会产生意想不到的副作用
- vmware - Vmware 使用 Ubuntu16 时始终保持黑屏
- javascript - 使用 Jquery 根据选定的下拉列表替换 div
- mysql - MYSQL将单个列中的两个不同值分成两列
- python-3.x - 类型错误:GridSearchCV 问题
- retrofit2 - Retrofit2:如何向服务器发送javaBean数据?(这个JavaBean中有很多文件)