如何在SWT应用程序中更改主题

时间:2013-05-20 05:05:37

标签: java swt

我是开发SWT应用程序的新手,我正在寻找一种简单的方法来改变我已经开发的小应用程序的主题。

在做了一些谷歌搜索后,我能够说出似乎有一种叫做演示文稿的东西,这似乎是一种我可以下载现成主题并将其应用到我的应用程序的方式。是吗?

或者,任何人都可以指出一个关于正确方法的好教程吗?

感谢

2 个答案:

答案 0 :(得分:2)

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

SWT的一个主要优点是它使用OS资源来模拟系统应用程序。使用主题会与这种方法相矛盾。

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

答案 1 :(得分: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;
  }
}