2013-05-20 40 views
0

我是新来开发SWT应用程序的人,并且正在寻找一种简单的方法来更改我已经开发的小应用程序的主题。如何在SWT应用程序中更改主题

做了一些Google搜索之后,我可以告诉我,似乎有一种称为演示的东西,它似乎是我可以下载现成的主题并将其应用于我的应用程序的一种方式。是对的吗?

或者任何人都可以点我一个正确的方式去做一个很好的教程呢?

感谢

回答

2

如果你只是在谈论SWT没有的Ecipse RCP,那么有没有办法主题的应用程序。

SWT的主要优势之一是它使用操作系统资源来模拟系统应用程序。使用主题会与此方法相矛盾。

如果您使用Eclipse RCP 4,请看@ Ran的答案。

+0

谢谢Baz。它只是一个没有Rich Client Platform的独立应用程序。所以你说要尝试和定制颜色和添加背景图像等是违背SWT的原则? – Richie

+0

@ user1600419那么,你不能使用主题。你唯一能做的就是创建自定义小部件。如果您真的需要*简单的主题切换,则可以使用[AWT/Swing](http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html)替代。请考虑upvoting和接受我的答案。 – Baz

+0

Tks Baz。好吧,我现在明白了。现在有一种简单的方法来改变我的小部件的外观和感觉。如果我想要自定义小部件,我必须以艰难的方式完成并自定义自己。 – Richie

1

org.eclipse.e4.ui.css.swt.theme扩展点支持扩展为主题的创建。这个扩展定义了一个风格的ID和一个指向CSS文件的指针。

您还可以通过org.eclipse.core.runtime.products扩展中的cssTheme属性定义默认主题。这也可以用来定义一个固定的样式。

要切换样式,请使用IThemeEngine

package com.example.e4.rcp.todo.handlers; 

import org.eclipse.e4.core.di.annotations.Execute; 
import org.eclipse.e4.ui.css.swt.theme.IThemeEngine; 

public class ThemeSwitchHandler { 
    // Remember the state 
    static boolean defaulttheme= true; 
    @Execute 
    public void switchTheme(IThemeEngine engine) { 
    System.out.println("ThemeSwitchHandler called"); 
    // The last argument controls 
    // whether the change should be persisted and 
    // restored on restart 
    if (!defaulttheme) { 
     engine.setTheme("com.vogella.e4.todo.defaulttheme", true); 

    } else { 
     engine.setTheme("com.vogella.e4.todo.redtheme", true); 
    } 
    defaulttheme= !defaulttheme; 
    } 
} 
相关问题