java swing开发中的substance设置lookFeel问题

Kyunchen 2015-01-28 12:16:24

package com.substance.test;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.border.StandardBorderPainter;
import org.jvnet.substance.button.StandardButtonShaper;
import org.jvnet.substance.skin.CremeSkin;
import org.jvnet.substance.watermark.SubstanceBubblesWatermark;

public class SubsTest {

/**
* @param args
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu();
menu.setText("Substance Test");
menuBar.add(menu);

frame.setJMenuBar(menuBar);
frame.setSize(200, 100);
frame.setVisible(true);
setLookFeel();
}

public static void setLookFeel() {
try {
// 设置外观
UIManager.setLookAndFeel(new SubstanceLookAndFeel());
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
// 设置主题
SubstanceLookAndFeel.setSkin(new CremeSkin());
// 设置按钮外观
SubstanceLookAndFeel
.setCurrentButtonShaper(new StandardButtonShaper()); // 设置水印
SubstanceLookAndFeel
.setCurrentWatermark(new SubstanceBubblesWatermark());
// 设置边框
SubstanceLookAndFeel
.setCurrentBorderPainter(new StandardBorderPainter());
// 设置渐变渲染
// SubstanceLookAndFeel
// .setCurrentGradientPainter(new StandardGradientPainter());
// 设置标题
// SubstanceLookAndFeel
// .setCurrentTitlePainter(new MatteHeaderPainter());
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
}

}
...全文
316 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kyunchen 2015-10-10
  • 打赏
  • 举报
回复
我最后发现,在我们做的swing开发中如果存在没有指定显示的宽度或者高度的容器包含给定了指定高度和宽度的组件,在使用substance就会报错。最后研究源码得出的结论是这个是substance的bug。
xnx3 2015-02-15
  • 打赏
  • 举报
回复
import java.awt.BorderLayout; import java.awt.Desktop; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import javax.security.auth.callback.ConfirmationCallback; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.jvnet.substance.SubstanceLookAndFeel; import org.jvnet.substance.skin.BusinessBlackSteelSkin; import org.jvnet.substance.skin.SubstanceOfficeBlue2007LookAndFeel; import org.jvnet.substance.utils.SubstanceConstants.ImageWatermarkKind; import org.jvnet.substance.watermark.SubstanceImageWatermark; import com.xnx3.*; import UI.BrowserJframe; import UI.BrowserMainJframe; import UI.LogJframe; import UI.MainJframe; import UI.RegisterJframe; import UI.Test; import action.File; import action.UIFunc; import include.Command; public class Main { public static void main(String[] args) { lookAndFeel(); //外观设置 } /** * 界面 */ public static void lookAndFeel(){ try { //外观设置 UIManager.setLookAndFeel(new SubstanceOfficeBlue2007LookAndFeel()); JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); SubstanceLookAndFeel.setSkin(new mySkin()); } catch (Exception e) { //如果设置lookAndFeel外观失败,则还原为系统风格 try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (InstantiationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (UnsupportedLookAndFeelException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // new Func.File().log("设置界面外观异常捕获:"+e.getMessage()); } } } class mySkin extends BusinessBlackSteelSkin{ public mySkin(){ super(); try { //新建一个图片水印,路径可以自己该,使用自己喜欢的图片来做应用程序的水印图片、 SubstanceImageWatermark watermark = new SubstanceImageWatermark(Main.class.getResourceAsStream("include/Module/j2se/res/bg.png")); watermark.setOpacity(1f); watermark.setKind(ImageWatermarkKind.APP_CENTER); // new Func.File().log("创建水印背景完毕"); this.watermark=watermark; } catch (Exception e) { // new Func.File().log("初始化界面捕获异常:"+e.getMessage()); } } }
Kyunchen 2015-01-28
  • 打赏
  • 举报
回复
上面贴上去的代码是一个重现问题的demo代码,可以直接使用,只需要下载一个substance.jar就可以了,还望大神能提供帮助,真心的感谢了,最主要的是我百度,google之后关乎这个的资料非常少,问题也各不一样,使用了substance之后程序出现各种报错。这个只是其中一个
Kyunchen 2015-01-28
  • 打赏
  • 举报
回复
这个是一个在java swing开发过程中,在设置组件的外观显示的时候使用了substance.jar,在setLookFeel操作之后,菜单就出现了最上面的bug截图 请大神。。。。。求助

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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