初学JAVA,在写JButton外观的时候,其它都没什么问题,就是在mousePressed的时候背景色无法改变,一直是默认的颜色,这是为什么,要如何解决?主要代码如下:
private void init() {
this.setFont(new Font(null,Font.PLAIN,10));
this.setMargin(new Insets(0,0,0,0));
this.setFocusPainted(false);
this.setBorder(border);
this.setBackground(Ex01.background);
this.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
display(0X1d7288,0Xd6eef4,0X9dd5e4);
}
//这个mousePressed的背景色无效,border倒是没问题
public void mousePressed(MouseEvent e) {
display(0X1b6a7f,0X95d2e2,0X2ca5c4);
}
public void mouseReleased(MouseEvent e) {
display(0X1d7288,0Xd6eef4,0X9dd5e4);
}
public void mouseExited(MouseEvent e) {
Ex01JButton.this.setBorder(border);
Ex01JButton.this.setBackground(Ex01.background);
}
});
}
private void display(int outsideColor,int insideColor,int backgroundColor) {
LineBorder outside=new LineBorder(new Color(outsideColor),1,true);
LineBorder inside=new LineBorder(new Color(insideColor),1,true);
CompoundBorder border=new CompoundBorder(outside,inside);
this.setBorder(border);
this.setBackground(new Color(backgroundColor));
}
private void init() {
this.setFont(new Font(null,Font.PLAIN,10));
this.setMargin(new Insets(0,0,0,0));
this.setFocusPainted(false);
this.setBorder(border);
this.setBackground(Ex01.background);
this.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
display(0X1d7288,0Xd6eef4,0X9dd5e4);
}
//这个mousePressed的背景色无效,border倒是没问题
public void mousePressed(MouseEvent e) {
display(0X1b6a7f,0X95d2e2,0X2ca5c4);
}
public void mouseReleased(MouseEvent e) {
display(0X1d7288,0Xd6eef4,0X9dd5e4);
}
public void mouseExited(MouseEvent e) {
Ex01JButton.this.setBorder(border);
Ex01JButton.this.setBackground(Ex01.background);
}
});
}
private void display(int outsideColor,int insideColor,int backgroundColor) {
LineBorder outside=new LineBorder(new Color(outsideColor),1,true);
LineBorder inside=new LineBorder(new Color(insideColor),1,true);
CompoundBorder border=new CompoundBorder(outside,inside);
this.setBorder(border);
this.setBackground(new Color(backgroundColor));
}
解决方案 »
- java题声明布尔变量isRight来标识用户的输入是否正确
- 哪个设计模式要用到抽象类?
- java.util.logging.Logger类的使用:如果生成的aaa.log.n文件被打开时,log数据丢失。
- 一个简单问题
- java打开一个IE后......
- 在项目管理中,大家都用什么来进行bug/defect管理和跟踪?200分
- 请问各位大哥,这个效果用java是如何实现的?请指教啊!小妹这厢有礼了!~~急啊!~
- 对于一个想找Java工作的新手来说有哪些要求吖?
- 谁看过《精通Servlets——Java平台的服务器端编程》这本书,给个评价,是否适合初学者?另外这本书的出版日期是2002年3月1日是不是老了点
- java根据 字段删除重复的数据
- utf8编码问题,弄了好长时间,请大家帮个忙
- 弱弱问下 HashMap中存放元素时 有没可能hashCode相同 而equals值不同?
在BasicButtonUI类中
在button处于按下状态的时候
会以一种按下色彩进行填充
就把你的背景给挡住了
你可以这样试下效果
把鼠标在你的按钮上按下(保持鼠标按下将你的鼠标移出这个button)
当然你要先去掉你的mouseExited事件中的代码
这时你就能看出改变的效果了
重写BasicButtonUI中的在按下时的绘制那部分代码
这个方法要求比较高方法二:
用JLabel代替JButton,平时设置凸起的边框
按下时用凹下的边框,一样可以有按钮的效果
按钮事件在mouseReleased中处理