java JFrame中关于按钮焦点问题使 按钮文字和背景换颜色的疑问

作业:在界面上放2个按钮:登录和退出,焦点到达某个按钮上,该按钮背景变为黄色,文字变为红色,如果失去焦点,就显示为一个普通按钮。下面是我写的代码,但是达不到要求impor... 作业:在界面上放2个按钮:登录和退出,焦点到达某个按钮上,该按钮背景变为黄色,文字变为红色,如果失去焦点,就显示为一个普通按钮。
下面是我写的代码,但是达不到要求
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FocusEventTest extends JFrame implements FocusListener{
JButton login=new JButton("登录");
JButton exit=new JButton("退出");
public FocusEventTest(){
this.setTitle("会变色的按钮框");
this.setLayout(new FlowLayout());
this.add(login);
this.add(exit);
this.setVisible(true);
this.setSize(200, 80);
login.addFocusListener(this);
exit.addFocusListener(this);
}
public void focusGained(FocusEvent e){
if(e.getSource()==login){
login.setForeground(Color.red);
exit.setBackground(Color.yellow);
this.getContentPane().setBackground(Color.red);
}
if(e.getSource()==exit){
exit.setForeground(Color.red);
login.setBackground(Color.yellow);
this.getContentPane().setBackground(Color.red);
}
}
public void focusLost(FocusEvent e){
}
public static void main(String args[]){
new FocusEventTest();
}
}
我的疑问是为神马运行了我的界面背景就马上变为红色,而且那个登录按钮是黄色的,点击了退出按钮,按钮就变为黄色,变不回来了。怎么实现题目的要求,各路大神,在我代码基础上修改吧,谢谢了
展开
 我来答
rancherworld
2015-05-05
知道答主
回答量:9
采纳率:0%
帮助的人:14.9万
展开全部

你写的代码没有把颜色给回原来颜色!

可以如下, 加上defaultForeground, defaultBackground, 并在constructor中记录button原来的颜色, 在button失去focus时,改回原来颜色!

因为只用到button, 并且所有拦槐磨button在得到焦点时都是同一文字/背景颜色, 在失去焦点时也简斗都是同一文字明虚/背景颜色, 所以不需要在focusGained()或focusLost()中检验是那一个button获得或失去焦点!

    ..
    Color defaultForeground;
    Color defaultBackground;
    ..
    public FocusEventTest (){
        ...
        defaultForeground = login.getForeground();
        defaultBackground = login.getBackground();
    }
    public void focusGained(FocusEvent e){
        JButton bt = (JButton)e.getSource();
        bt.setForeground(Color.red);
        bt.setBackground(Color.yellow);
    }
    public void focusLost(FocusEvent e){    
        JButton bt = (JButton)e.getSource();
        bt.setForeground(defaultForeground);
        bt.setBackground(defaultBackground);
    }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式