关于JButton的UI设置

li_haizhou 2003-04-05 12:01:29
我自定义了一个JButton的UI类,继承BasicButtonUI类,重载了其中的installDefaults方法,在该方法中,设置了我自定义的background和border。

界面上的按钮虽然使用了我的backgound和border,但是当我点击按钮时,没有了JButton原来有的按下的动画效果,也就是说,我画面上的JButton当按下时外观没有改变。

不知道我的意思有没有表达清楚。
:)

下面是我的代码:
public class FBNBookButtonUI extends BasicButtonUI{
protected void installDefaults(AbstractButton b) {
//super.installDefaults(b);

// *** begin optimized defaults install ***
Color currentBackground = b.getBackground();
Border currentBorder = b.getBorder();

if (currentBackground == null || currentBackground instanceof UIResource) {
b.setBackground(ArtuSwingConstants.buttonBackground);
}
if (currentBorder == null || currentBorder instanceof UIResource) {
b.setBorder(ArtuSwingConstants.buttonBorder);
}
// *** end optimized defaults install ***/
}
...
}


请Swing高手指点一下:
如何才能使我画面上的按钮具有动画效果?
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_haizhou 2003-04-13
  • 打赏
  • 举报
回复
算了,结贴吧。

虽然没有得到满意的答案,但还是要感谢mercury1231和爱人的林的回答。
scorpionmxk 2003-04-07
  • 打赏
  • 举报
回复
不好意思,button的UI我也没真正做过,我做过Tree的UI,我就是用我的getui得到Tree的UI,然后覆盖相应方法的,我觉得道理差不多的,
scorpionmxk 2003-04-06
  • 打赏
  • 举报
回复
你自己继承了BasicButtonUI有什么用,你应该得到Button的BasicButtonUI类,然后重载它,也就是用你写的那些方法覆盖它的相应方法!
li_haizhou 2003-04-06
  • 打赏
  • 举报
回复
to 爱人的林,
非常感谢你的关注,但很抱歉,我可能没有完全了解你的意思。

1,“你自己继承了BasicButtonUI有什么用”
为什么没有用呢?
Jbutton a = toolbar.add(aAction);
a.setUI(new FBNButtonUI());

多么简捷的代码!
如果不用UI,上面的效果应该怎样实现呢?


2,“你应该得到Button的BasicButtonUI类,然后重载它,也就是用你写的那些方法覆盖它的相应方法!”
你是否指下面形式的代码:

Jbutton a = toolbar.add(aAction);
//你应该得到Button的BasicButtonUI类
ButtonUI aUI = a.getUI();
//然后重载它
//?
//对不起,我不知道应该怎么做,是否能够再给点提示?
...
a.setUI(aUI);

或者我没有理解正确,应该是其他的形式?
那么是否要对每一个JButton都要做一下上面的操作呢?
li_haizhou 2003-04-06
  • 打赏
  • 举报
回复
有没有哪位前辈使用过自定义UI呀?
怎么没有人回答我了?
li_haizhou 2003-04-05
  • 打赏
  • 举报
回复
up
li_haizhou 2003-04-05
  • 打赏
  • 举报
回复
to mercury1231:

1、“是不是因为你没有写按钮事件?”
这和写没写按钮事件无关。
你知道,只要你在画面上放上一个按钮,你用鼠标点击它,它的形状就会变成按下的形状;
鼠标再抬起来,按钮又恢复正常。

2、“我建议你直接继承JButton得好一点,因为看来用不着那么烦。”
好的,我用你的建议做一下。
但我觉得我的改动是对JButton外观的改动,放在其UI类里,应该具有更加良好的逻辑划分。
当然,如果我用UI类实在解决不了问题,就只能采用继承的方式了,尽管我不认为这比定制UI更加合适。

3、老大,还有没有其他建议?
mercury1231 2003-04-05
  • 打赏
  • 举报
回复
是不是因为你没有写按钮事件?
我建议你直接继承JButton得好一点,因为看来用不着那么烦。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧