2017-07-26 28 views
0

私は、読み取り専用モードになるコンボボックスを持っています。コンボボックスの目的を示すコンボボックスにデフォルト値を設定したいとします(コンボボックスでは、米国、インド、イングランドなどの他の項目の数を持つ「Location」としてのデフォルトテキストを持つ場所コンボ)。 注:デフォルト値は、コンボボックス内の項目のいずれかであってはなりません。 コンボボックスが読み取り専用モードの場合は不可能です。 可能な回避策があれば教えてください。設定方法Swtコンボボックスのデフォルト値は?

下の図に示すように、A、B、C、Dなどの異なるバリアントを持つコンボボックスがありますが、コンボボックスにはデフォルトのラベル「Variant」があります。

enter image description here

+0

あなたは、読み取り専用のコンポーネントの値を超える何かを表示したいですか? –

+0

@兵器宮本はい –

答えて

3

これはCComboを用いて達成することができます。 setItems(String[])setText(String)の前にを使用してコンボの項目を設定すると、コンボ内の項目の1つではないデフォルト値が表示されます。

getSelectionIndex()を呼び出すと、まだアイテムが選択されていないため、戻り値は-1になります。アイテムが選択されると、既定値は存在しなくなります。

public class CComboDefaultTextTest { 

    public static void main(final String[] args) { 
     final Display display = new Display(); 
     final Shell shell = new Shell(display); 
     shell.setLayout(new GridLayout()); 

     final Composite baseComposite = new Composite(shell, SWT.NONE); 
     baseComposite 
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
     baseComposite.setLayout(new GridLayout()); 

     final CCombo combo = new CCombo(baseComposite, SWT.READ_ONLY 
       | SWT.BORDER); 
     combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 
     // Be sure to do this before calling setText() 
     combo.setItems(new String[] { "item 1", "item 2", "item 3" }); 
     combo.setText("Default"); 

     System.out.println(combo.getSelectionIndex()); 

     shell.pack(); 
     shell.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) { 
       display.sleep(); 
      } 
     } 
     display.dispose(); 
    } 

} 

結果:

enter image description here

関連する問題