我注意到
Java为root用户和非root用户提出了不同的外观和感觉类.我试图了解如何使LAF保持一致.而且,即使在用户/ root中也不一致:取决于用户/ root登录的方式:
示例代码(在laf.jar中编译和打包):
import javax.swing.UIManager; public class laf { public static void main(java.lang.String[] args) { try { System.out.print(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { } } }
方案1以普通用户身份登录到计算机(在GUI模式下)
样本输出(以用户身份)
[xxx@yyy Downloads]$java -classpath laf.jar laf com.sun.java.swing.plaf.gtk.GTKLookAndFeel
样本输出(通过su切换到root)
[root@yyy Downloads]# java -classpath ./laf.jar laf javax.swing.plaf.metal.MetalLookAndFeel
方案2以root身份登录到计算机(在GUI模式下)
示例输出(以root身份)
[root@yyy Downloads]# java -classpath ./laf.jar laf com.sun.java.swing.plaf.gtk.GTKLookAndFeel
场景3作为普通用户通过SSH登录到计算机(类似于上面的场景#1,但在这种情况下 – 相同的LAF)
样本输出(以用户身份)
[xxx@yyy Downloads]$java -classpath laf.jar laf javax.swing.plaf.metal.MetalLookAndFeel
示例输出(切换到root)
[root@yyy Downloads]# java -classpath ./laf.jar laf javax.swing.plaf.metal.MetalLookAndFeel
软件版本:
[root@yyy Downloads]# java -version java version "1.7.0" Java(TM) SE Runtime Environment (build pxa6470sr9fp10-20150708_01(SR9 FP10)) IBM J9 VM (build 2.6,JRE 1.7.0 Linux amd64-64 Compressed References 20150701_255667 (JIT enabled,AOT enabled) J9VM - R26_Java726_SR9_20150701_0050_B255667 JIT - tr.r11_20150626_95120.01 GC - R26_Java726_SR9_20150701_0050_B255667_CMPRSS J9CL - 20150701_255667) JCL - 20150628_01 based on Oracle jdk7u85-b15 [root@yyy Downloads]# cat /etc/redhat-release Red Hat Enterprise Linux Workstation release 6.7 (Santiago)
解决方法
getSystemLookAndFeelClassName的第一行是:
public static String getSystemLookAndFeelClassName() { String systemLAF = AccessController.doPrivileged( new GetPropertyAction("swing.systemlaf"));
因此您可以使用用户的JAVA_OPTS进行设置
-Dswing.systemlaf = javax.swing.plaf.metal.MetalLookAndFeel中
默认情况下.
将其添加到用户的.rc-File:
set JAVA_OPTS=-Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel export JAVA_OPTS
问候
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。