aswing 换肤

aswing设置JButton的样式
很简单,你用yourButton.setIcon(new AssetIcon(yourIcon))就可以
如果你不仅仅是要Icon,要整个按钮外观都变成这个图片,你可以把它做成一个Flash的SimpleButton,在FlashIDE里面制作
然后用JButton.wrapSimpleButton(theSimpleButton),搞定
如果你偏偏要用图片,你还可以通过GroundDecorator来实现,调用setBorder,setBackgroundDecorator,setOpaque先把按钮的所有默认装饰去掉,然后setBackgroundDecorator用你实现的GroundDecorator来修饰。
如果要在按钮状态改变时,切换图片,你还可以在GroundDecorator的updateDecorator方法里根据不同的状态显示不同的图片。
如果你使用SkinBuilderLAF,通过UI的方式也可以,你可以这样;
var ui:ComponentUI = yourBtn.getUI();
ui.putDefault("Button.defaultImage", YourButton_defaultImageClass);
ui.putDefault("Button.pressedImage", YourButton_pressedImageClass);
ui.putDefault("Button.bg", SkinButtonBackground);
…………
最后记得要设置回去,yourBtn.setUI(ui);

=================================================

第三个方法我在aswing 2.0上没有试用成功,可能我对aswing还不太了解吧,第二个方法我写了一个GroundDecorator继承自SkinButtonBackground,覆盖了setupAssets方法。

override protected function setupAssets(ui:ComponentUI):void
{
stateAsset.setDefaultButtonImage(getAsset(ui, "DefaultButton.defaultImage"));
stateAsset.setDefaultImage(new cup());
stateAsset.setPressedImage(new cdown());
stateAsset.setPressedSelectedImage(getAsset(ui, "pressedSelectedImage"));
stateAsset.setDisabledImage(getAsset(ui, "disabledImage"));
stateAsset.setSelectedImage(getAsset(ui, "selectedImage"));
stateAsset.setDisabledSelectedImage(getAsset(ui, "disabledSelectedImage"));
stateAsset.setRolloverImage(new cover());
stateAsset.setRolloverSelectedImage(getAsset(ui, "rolloverSelectedImage"));
}

posted @ 2012-03-16 18:44  ndljava  阅读(882)  评论(0编辑  收藏  举报