2011-12-06 24 views
2

私はorg.eclipse.swt.widgets.TabItemに基づいてGUIを設計しています。swt tabitemを非アクティブにするには?

TabFolderを「非アクティブ」、つまり通常の明るい灰色で表示し、含まれているすべての要素を無効にする方法はありますか?

これは私が設計できる他のシステムのものです。私もswtでも可能だと思っていましたが、私はこの環境を初めて使いこなしています。この話題でGooglingした後、私は解決策を見つけることができませんでした。まったく可能ですか?

答えて

6

TabItemをクリックする方法がないため、TabItemを無効(無効)に設定することはできません。しかし、選択したTabItemのコンテンツを無効にするのはかなり簡単です。ちょうどを取得してTabItemインスタンスにバインドし、setEnable(false)を呼び出してください。

/* 
* TabFolder example snippet: create a tab folder (six pages) 
* 
* For a list of all SWT example snippets see 
* http://www.eclipse.org/swt/snippets/ 
*/ 
import org.eclipse.swt.*; 
import org.eclipse.swt.graphics.Rectangle; 
import org.eclipse.swt.widgets.*; 

public class TabItemDisable { 

public static void main (String [] args) { 
    Display display = new Display(); 
    final Shell shell = new Shell (display); 
    final TabFolder tabFolder = new TabFolder (shell, SWT.BORDER); 
    Rectangle clientArea = shell.getClientArea(); 
    tabFolder.setLocation (clientArea.x, clientArea.y); 
    for (int i=0; i<6; i++) { 
     TabItem item = new TabItem (tabFolder, SWT.NONE); 
     item.setText ("TabItem " + i); 
     Button button = new Button (tabFolder, SWT.PUSH); 
     button.setText ("Page " + i); 
     item.setControl (button); 
    } 
    tabFolder.pack(); 

    // disabling content of selected TabItems 
    tabFolder.getTabList()[0].setEnabled(false); 
    tabFolder.getTabList()[2].setEnabled(false); 
    tabFolder.getTabList()[4].setEnabled(false); 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) display.sleep(); 
    } 
    display.dispose(); 
} 
} 
関連する問題