2013-05-20 42 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; 
    } 
} 
相關問題