我自己做了一个窗体,想让鼠标移到按钮上时改变按钮的背景色,但是不知道为甚不行,我贴出部分代码请大家帮忙看看public class Login extends JFrame implements ActionListener,MouseListener{                   .......//省略
         
                   //添加注册按钮
jbtnRegister=new JButton("注册账号");
jbtnRegister.setBorder(null);//去掉按钮边框
jbtnRegister.setContentAreaFilled(false);//设置内容区域不填充
jbtnRegister.setBounds(235, 78, 110, 25);
jbtnRegister.addActionListener(this);
jbtnRegister.addMouseListener(this);
                  .......//省略
         public void actionPerformed(ActionEvent e){
if(e.getSource()==jbtnSet){

}else if(e.getSource()==jbtnLogin){

}else if(e.getSource()==jbtnRegister){
Register register=new Register();
register.init();
}else{

}

}
public void mouseClicked(MouseEvent e){

}
public void mousePressed(MouseEvent e){

}
public void mouseReleased(MouseEvent e){

}
public void mouseEntered(MouseEvent e){
if(e.getSource()==jbtnRegister){
jbtnRegister.setBackground(Color.PINK);  //鼠标移到jbtnRegister上时没有变色
}
}
public void mouseExited(MouseEvent e){

}}

解决方案 »

  1.   

    我把下下面这句去了就可以了
    jbtnRegister.setContentAreaFilled(false);//设置内容区域不填充但是看起来不好看了,我要得是让按钮上只有字(效果可以参看QQ登录时的右边有个“找回密码”),如果去掉上面这句就会有一个按钮的轮廓(中间是凸起的),改怎么才能满足我要得效果呢?
      

  2.   

    写成下面这种试试
    public void mouseEntered(MouseEvent e){
    if(e.getSource()==jbtnRegister){
    setFont(jbtnRegister,new Font("宋体",Font.PLAIN,12),new Color(255,0,0));
    }else if(e.getSource()==jbtnGetPwd)
    {
    //JOptionPane.showMessageDialog(null, "Closed   Test "); //弹出对话框
    setFont(jbtnGetPwd,new Font("宋体",Font.PLAIN,12),new Color(255,0,0));
    }
    }
      

  3.   

    采用JLabel代替JButton,一样的可以实现你需要的功能,而且JLabel在样式设置上都很好控制的。