- ベストアンサー
SWTで動的にコントロールを追加する方法
いつもお世話になります。 SWTを使用してクライアントアプリケーションを作成しているのですが、動的にコントロールを作成する方法を教えて頂けませんでしょうか。 例えばあるボタンを押下したタイミングでTextのコントロールを追加したい場合、単純にCompositeにTextを作成しただけだと、何も変化がないのですが、ウィンドウのサイズを変更すると、その変更が反映されているのは確認できています。 コントロール追加した後、updateやredrawなどを試しても見ても変わらずでした。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Compositeに何らかのレイアウトを設定しているのならlayoutメソッドで再レイアウトをさせてみては? SWTのコードを久しぶりに書いたため最近のコーディング作法に合っていないかもしれないが以下サンプル。 ボタンを押すたびにTextが追加され表示される動作をJDK1.6+SWT3.6.2で確認。 Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout(SWT.HORIZONTAL)); final Composite composite = new Composite(shell, SWT.NULL); composite.setLayout(new RowLayout(SWT.HORIZONTAL)); Button button = new Button(composite, SWT.NULL); button.setText("テキストボックス追加"); button.addSelectionListener(new SelectionAdapter(){ private int count = 0; public void widgetSelected(SelectionEvent e){ new Text(composite, SWT.SINGLE | SWT.BORDER).setText(++count + "個目のテキストボックス"); // Textを追加し、 composite.layout(); // Composite#layout()を呼び出して再レイアウト } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose();