`
liufei.fir
  • 浏览: 685235 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Swing 的观感切换

阅读更多
今天学习了怎样切换Swing的观感,感觉还不错                                                                     

在默认的情况下,Swing 程序使用Metal观感,可以采用两种方法改变观感。

      第一种方式是在Java的安装的子目录下jre / lib有一个文件swing.properties。在这个文件中,将属性Swing.defaultlaf 设置为所希望的观感类名。例如:

swing.defaultlaf = com.sun.java.swing.plaf.motif.MotifLookAndFeel

ps:第一中方式我怎么也没找到那个swing.properties,不知大家的如何?

  注意,Metal观感位于Javax.swing包中。其他的观感包位于com.sun.java包中,并且不是在每个Java实现中都提供。现在,鉴于版权的原因,Windows 和Mac 的观感包只与Windows和Mac版本的java运行环境一起发布。

   提示:下面给出一个测试很有帮助的的建议。由于属性文件中的以#字符开始的行被忽略,所以,可以在swing.properties 文件中提供几种观感,并同过增删#字符来切换选择:

#swing.defaultlaf = javax.swing.plaf.metal.MetalLookAndFeel

  swing.defaultlaf = com.sun.java.swing.plaf.motif.MotifLookAndFeel

#swing.defaultlaf = com.sun.java.swing.plaf.windows.WindowsLookAndFeel

采用这种方式开启观感时必须重新启动程序。Swing程序只在启动时读取一次swing.properties文件。

      第二种方式是动态地改变观感。这需要调用静态的UIManager.setLookAndFeel方法,并提供所想要的观感类名,然后再调用静态方法 SwingUtilities.updateComponentTreeUI来刷新全部的组件集。这里需要向这个方法提供一个组件,并由此找到其他的所有组件。当UIManager.setLookAndFeel方法没有找到所希望的观感或在加载过程中出现错误时,将会抛出异常。

     下面是一个例子,他显示了如何在程序中切换观感的方式。在这个程序中,这有点需要注意的地方。在内部动作监听器类的actionPerformed方法中,需要将一个外部的PalfPanel类的this引用传递给updateComponentTreeUI方法。
java 代码

   1. import java.awt.*;  
   2. import java.awt.event.*;  
   3. import javax.swing.*;  
   4.  
   5.  
   6. public class PlafTest {  
   7.  
   8.     public static void main(String[] args) {  
   9.         // TODO Auto-generated method stub  
  10.         PlafFrame frame = new PlafFrame();  
  11.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  12.         frame.setVisible(true);  
  13.  
  14.     }  
  15. }  
  16.  
  17. //A Frae with a button panel for chaing look and fell  
  18. class PlafFrame extends JFrame {  
  19.       
  20.     public static final int DEFAULT_WIDTH = 300;  
  21.     public static final int DEFAULT_HEITHT =200;  
  22.       
  23.     public PlafFrame(){  
  24.           
  25.         setTitle("PlaF Test");  
  26.         setBounds(350,250,DEFAULT_WIDTH,DEFAULT_HEITHT);  
  27.         PlafPanel panel = new PlafPanel();  
  28.         add(panel);  
  29.     }  
  30.       
  31. }  
  32.  
  33. //A panel with buttons to change the pluggable look and fell  
  34.  
  35. class PlafPanel extends JPanel {  
  36.     public PlafPanel(){  
  37.         UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();  
  38.         for(UIManager.LookAndFeelInfo info : infos)  
  39.             makeButton(info.getName(),info.getClassName());  
  40.               
  41.           
  42.     }  
  43.       
  44.    void makeButton(String name,final String plafName){  
  45.          
  46.        //add button to panel  
  47.          
  48.        JButton button = new JButton(name);  
  49.        add(button);  
  50.          
  51.        //set button action  
  52.          
  53.        button.addActionListener(new 
  54.          ActionListener(){  
  55.            public void actionPerformed(ActionEvent event){  
  56.                  
  57.                //button action :switch to the new look and feel  
  58.                try{  
  59.                    UIManager.setLookAndFeel(plafName);  
  60.                    SwingUtilities.updateComponentTreeUI(PlafPanel.this);  
  61.                      
  62.                }  
  63.                catch(Exception e){e.printStackTrace();}  
  64.              
  65.            }  
  66.              
  67.        });  
  68.    }  
  69.       
  70.       
  71. }   

分享到:
评论

相关推荐

    Swing观感切换.rar

    在提供的文档"Swing观感切换.doc"中,很可能是详细介绍了如何在实际项目中实现Swing观感的切换,包括代码示例、注意事项和可能遇到的问题。阅读这份文档可以帮助你更好地理解和运用这些知识点,创建出更符合用户期望...

    Java Swing自定义观感(仅以自定义treeUI为例)

    Java Swing默认提供了多种观感,如Metal、Windows、Nimbus等,但这些观感可能无法满足所有开发者或用户的个性化需求。因此,自定义观感成为了一个必要的技能。 自定义观感在Java Swing中主要通过实现`UIManager....

    swing中英切换

    在Swing中实现中英切换是一项常见的需求,特别是在开发多语言应用时。Swing提供了强大的本地化(Localization)支持,允许开发者轻松地为应用程序添加多种语言。 在Swing中,中英切换主要通过资源包(Resource ...

    java Swing多Jpanel动态滑动切换效果

    java Swing多Jpanel仿安卓苹果桌面动态切换滑动效果

    swing多个jpanel布局切换实例

    在"swing多个布局切换实例"中,我们主要关注CardLayout,它是用于在面板上切换多个视图的理想选择。 CardLayout允许你在同一空间内显示多个组件,每次只显示一个。你可以通过调用特定的方法来改变显示的组件,就像...

    swing透明切换

    Swing透明切换是Java GUI开发中的一个重要特性,它允许开发者创建具有透明效果的组件,以实现更为美观且交互性更强的用户界面。在Java的Swing库中,这种功能主要通过`java.awt.Transparency`接口和`java.awt....

    java+swing漂亮软件界面+超酷+以及javaswing教程.7z

    Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。在Java中,Swing提供了丰富的组件集,允许开发者创建美观且功能强大的桌面应用程序。"java+swing漂亮...

    swing多窗口联动的实现示例

    在Java的Swing库中,开发GUI应用程序时,我们经常需要处理多个窗口之间的交互和数据共享,这在实际应用中非常常见,例如在一个主窗口进行操作,然后更新其他子窗口的信息。本示例"swing多窗口联动的实现示例"就是...

    解决swing白屏问题的jjre

    Swing是Java GUI库的一部分,用于构建桌面应用程序。在某些情况下,用户可能会遇到“白屏”问题,这通常是由于Swing组件渲染不正确或者与Java运行时环境(JRE)的兼容性问题导致的。标题提到的“解决swing白屏问题的...

    java Swing多Jpanel仿安卓苹果桌面动态切换滑动效果

    java Swing多Jpanel仿安卓苹果桌面动态切换滑动效果

    swing-layout-1.0.3

    swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...

    Java GUI 切换面板

    该资源是javax.swing 包中的类,使用该类的中方法实现面板的切换,是使用者能够清晰的明了的使用GUI程序

    swing教程 swing教程

    Swing 教程 Swing 简介 Swing 是 Java 的一个图形用户界面(GUI)工具包,用于创建跨平台的 GUI 应用程序。Swing 是 Java Foundation Classes(JFC)的一个组件,提供了大量的轻量级 GUI 组件,可以用来创建复杂的...

    java swing漂亮界面 超酷 javaswing教程

    6. **JTabbedPane和JSplitPane**:JTabbedPane可以创建带有标签的页面,方便切换不同视图;JSplitPane则用于分割窗口,让用户可以调整两个区域的大小。 7. **对话框**:JOptionPane提供了一些预定义的对话框,如...

    javaSwing皮肤大全.rar

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。Swing 提供了一种可定制外观和感觉(LookAndFeel)的方法,使得开发者可以改变应用的视觉风格,以满足不同用户...

    swing计算器,swing计算器 swing计算器

    Swing计算器是一款基于Java Swing库开发的简单计算工具。Swing是Java的一种图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,主要用于构建桌面应用程序。本项目的核心在于利用Swing组件来...

Global site tag (gtag.js) - Google Analytics