awt组件的swing实现
Swing为除Canvas之外的所有AWT组件提供了相应的实现,Swing组件比AWT组件的功能更加强大。相对于AWT组件,Swing组件具有如下4个额外的功能:
1.可以为Swing组件设置提示信息。使用setToolTipText()方法,为组件设置对用户有帮助的提示信息
2.很多Swing组件如按钮、标签、菜单项等,除使用文字外,还可以使用图标修饰自己。为了允许在Swing组件中使用图标,Swing为Icon接口提供了一个实现类:Imagelcon,该实现类代表一个图像图标
3.支持插拔式的外观风格。每个JComponent对象都有一个相应的ComponentUI对象,为它完成所有的绘画、事件处理、决定尺寸大小等工作ComponentUI对象依赖当前使用的PLAF,使用UIManager.setLookAndFeel()方法可以改变图形界面的外观风格
4.支持设置边框。Swing组件可以设置一个或多个边框。 Swing中提供了各式各样的边框供用户边用,也能建立组合边框或自己设计边框。一种空白边框可以用于增大组件,同时协助布局管理器对容器中的组件进行合理的布局
每个Swing组件都有一个对应的UI类,例如JButton组件就有一个对应的ButtonUI类来作为UI代理。每个Swing组件的UI代理的类名总是将该Swing组件类名的去掉,然后在后面添加UI后缀。UI代理类通常是一个抽象基类,不同的PLAF会有不同的UI代理实现类。Swing类库中包含了几套UI代理,分别放在不同的包下,每套UI代理都几乎包含了所有Swing组件的ComponentUI实现,每套这样的实现都被称为一种PLAF实现
UI类如下:
1、ComponentUI有一个子类ButtonUI。ComponentUI在javax.swing.plaf包下
2、ButtonUI有一个子类BasicButtonUI。ButtonUI在javax.swing.plaf包下
3、BasicButtonUI有两个子类MenultemUI、BasicButtonUI。BasicButtonUI在javax.swing.plaf.basic包下 MenultemUI在javax.swing.plaf包下 BasicButtonUI在javax.swing.plaf.basic包下
4、BasicButtonUI还有三个子类MotifButtonUI、MetalButtonUI、WindowsButtonUI。 MotifButtonUI在com.sun.java.swing.plaf.motif包下 MetalButtonUI在javax.swing.plaf.metal包下 WindowsButtonUI在com.sun.java.swing.plaf.windows包下
如果需要改变程序的外观风格, 则可以使用如下代码:
xxxxxxxxxx
//创建窗口对象
JFrame jf = new JFrame();
try{
//设置外观风格
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//刷新jf容器及其内部组件的外观
SwingUtilities.updateComponentTreeUI(jf);
}catch (Exception e) {
e.printStackTrace();
}