主要代码如下:
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));
}
6 个解决方案
#1
楼主,有个根本的原因
在BasicButtonUI类中
在button处于按下状态的时候
会以一种按下色彩进行填充
就把你的背景给挡住了
你可以这样试下效果
把鼠标在你的按钮上按下(保持鼠标按下将你的鼠标移出这个button)
当然你要先去掉你的mouseExited事件中的代码
这时你就能看出改变的效果了
在BasicButtonUI类中
在button处于按下状态的时候
会以一种按下色彩进行填充
就把你的背景给挡住了
你可以这样试下效果
把鼠标在你的按钮上按下(保持鼠标按下将你的鼠标移出这个button)
当然你要先去掉你的mouseExited事件中的代码
这时你就能看出改变的效果了
#2
那具体有什么好的解决办法吗?
#3
方法一:
重写BasicButtonUI中的在按下时的绘制那部分代码
这个方法要求比较高
方法二:
用JLabel代替JButton,平时设置凸起的边框
按下时用凹下的边框,一样可以有按钮的效果
按钮事件在mouseReleased中处理
#4
sunyiz 在图形界面很专长的呦
#5
呵呵,似乎我也总是能看到你
#6
LABEL很好用,解决~3Q
#1
楼主,有个根本的原因
在BasicButtonUI类中
在button处于按下状态的时候
会以一种按下色彩进行填充
就把你的背景给挡住了
你可以这样试下效果
把鼠标在你的按钮上按下(保持鼠标按下将你的鼠标移出这个button)
当然你要先去掉你的mouseExited事件中的代码
这时你就能看出改变的效果了
在BasicButtonUI类中
在button处于按下状态的时候
会以一种按下色彩进行填充
就把你的背景给挡住了
你可以这样试下效果
把鼠标在你的按钮上按下(保持鼠标按下将你的鼠标移出这个button)
当然你要先去掉你的mouseExited事件中的代码
这时你就能看出改变的效果了
#2
那具体有什么好的解决办法吗?
#3
方法一:
重写BasicButtonUI中的在按下时的绘制那部分代码
这个方法要求比较高
方法二:
用JLabel代替JButton,平时设置凸起的边框
按下时用凹下的边框,一样可以有按钮的效果
按钮事件在mouseReleased中处理
#4
sunyiz 在图形界面很专长的呦
#5
呵呵,似乎我也总是能看到你
#6
LABEL很好用,解决~3Q