Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SWT应用程序中更改主题_Java_Swt - Fatal编程技术网

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

Java 如何在SWT应用程序中更改主题,java,swt,Java,Swt,我刚开始开发SWT应用程序,正在寻找一种简单的方法来改变我已经开发的一个小应用程序的主题 在做了一些谷歌搜索之后,我能够分辨出似乎有一种叫做“演示”的东西,这似乎是一种我可以下载现成主题并将其应用于我的应用程序的方法。是这样吗 或者,有谁能给我指出一个好的教程,告诉我正确的方法吗 谢谢org.eclipse.e4.ui.css.swt.theme扩展点支持为主题创建扩展。此扩展名定义样式的ID和指向CSS文件的指针 您还可以通过org.eclipse.core.runtime.products扩

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

在做了一些谷歌搜索之后,我能够分辨出似乎有一种叫做“演示”的东西,这似乎是一种我可以下载现成主题并将其应用于我的应用程序的方法。是这样吗

或者,有谁能给我指出一个好的教程,告诉我正确的方法吗


谢谢

org.eclipse.e4.ui.css.swt.theme扩展点支持为主题创建扩展。此扩展名定义样式的ID和指向CSS文件的指针

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

要切换样式,请使用
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;
  }
} 

org.eclipse.e4.ui.css.swt.theme
扩展点支持为主题创建扩展。此扩展名定义样式的ID和指向CSS文件的指针

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

要切换样式,请使用
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;
  }
} 

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

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


但是,如果您使用的是EclipseRCP4,请查看@Ran的答案。

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

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


但是,如果您使用的是EclipseRCP4,请查看@Ran的答案。

谢谢Baz。它只是一个没有富客户端平台的独立应用程序。那么你是说尝试自定义颜色和添加背景图像等违反了SWT的原则?@user1600419那么你就不能使用主题了。您唯一能做的就是创建自定义小部件。如果你真的需要简单的主题切换,你最好还是换个主题。请考虑一下投票并接受我的回答。Tks Baz。好的,我现在明白了。现在有一种简单的方法可以改变我的小部件的外观和感觉。如果我想定制这些小部件,我就必须用艰难的方式来定制自己。有什么方法可以让颜色主题在任何时候都保持不变吗?我可以为我的应用程序强制设置一个默认的一个主题吗。它只是一个没有富客户端平台的独立应用程序。那么你是说尝试自定义颜色和添加背景图像等违反了SWT的原则?@user1600419那么你就不能使用主题了。您唯一能做的就是创建自定义小部件。如果你真的需要简单的主题切换,你最好还是换个主题。请考虑一下投票并接受我的回答。Tks Baz。好的,我现在明白了。现在有一种简单的方法可以改变我的小部件的外观和感觉。如果我想定制这些小部件,我就必须用艰难的方式来定制自己。有什么方法可以让颜色主题在任何时候都保持不变吗?我可以为我的应用程序强制设置一个默认的一个主题吗?