2012-02-10 12 views
0

私はSWTのUIを、SWTとUIの両方のプログラミングに総合的な初心者としてデザインしようとしています。 SWTのドキュメントのスニペットに基づいて、私は次のように書いている:swtレイアウトのアドバイス:下の表にある

Display.setAppName("App Name"); 

    Display display = new Display(); 

    Shell shell = new Shell(display); 
    shell.setLayout(new GridLayout()); 

    Group group = new Group(shell, SWT.DEFAULT); 
    group.setLayout(new GridLayout()); 

    for (int i = 0; i < 3; i++) 
     new Button(group, SWT.PUSH).setText("ABC" + i); 

    new Label(group, SWT.SEPARATOR | SWT.VERTICAL); 

    for (int i = 0; i < 3; i++) 
     new Button(group, SWT.PUSH).setText("ABC" + i); 

    new Label(group, SWT.SEPARATOR | SWT.HORIZONTAL); 

    Table table = new Table(group, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION); 
    table.setLinesVisible(true); 
    table.setHeaderVisible(true); 
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); 
    table.setLayoutData(data); 

    for (String title : new String[] { "A", "B", "C", "D", "E", "F", "G" }) 
     new TableColumn(table, SWT.NONE).setText(title); 

    for (int i = 0; i < 128; i++) { 
     TableItem item = new TableItem (table, SWT.NONE); 
     item.setText(0, "123"); 
     item.setText(1, "234"); 
     item.setText(2, "345"); 
     item.setText(3, "456"); 
     item.setText(4, "567"); 
     item.setText(5, "678"); 
     item.setText(6, "789"); 
    } 

    for (TableColumn column : table.getColumns()) 
     column.pack(); 

    shell.pack(); 
    shell.open(); 

    while (shell.isDisposed() != true) 
     if (display.readAndDispatch() != true) 
      display.sleep(); 

    display.dispose(); 
} 

これは次のようになり:私はRowLayout(にグループ上のレイアウトを変更した場合

 
ABC1 
ABC2 
ABC3 
| 
ABC1 
ABC2 
ABC3 
--- 
Table 

)が、ドン」テーブルのGridData()をRowData()に変更すると、クラスキャスト例外が発生します。

 
ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3 
------------------------------- 
      Table 

任意の提案:

 
ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3 ---- Table 

私がしたいことはこれです:私はそれがRowData()私はのように見える何かを得るに変更した場合は?

答えて

0

あなたがテーブルを作成するとき、次に2の幅でのGridLayoutにシェルのレイアウトを設定し主にメモリから2

にgridData水平スパンを設定し、テストされていない

Shell myshell = new Shell(display, SWT.NONE); 
GridLayout twoColumn = new GridLayout(); 
twoColumn.numColumns = 2; 
myshell.setLayout(gl); 

Group g1 = new Group(myshell, SWT.DEFAULT); 
Group g2 = new Group(myshell, SWT.DEFAULT); 

GridData twospan = new GridData(SWT.FILL, SWT.FILL,true,true); 
twospan.horizontalSpan = 2; 

Table t1 = new Table(myshell, SWT.DEFAULT); 
t1.setLayoutData(twospan); 

これは、設定する必要がありますあなたのGridLayoutには2つの列があるので、g1を追加すると左上のg1になり、右上に移動します。次に、t1が2つの列を占めるように指定するので、追加すると2行目全体が使用されます。今のところセパレータラベルも無視されています。

+0

成功!並べ替えそれはまだ私がそれを望むように見えませんが、それはより近いです。新しい投稿で追加の質問をします。 – jph

0

私はひどい手書きのレイアウトマネージャですので、私はWindowBuilder Proを使っています。あなたはドラッグアンドドロップだけですべてをしたい場所に、それから一緒に接着剤。

関連する問題