0

名前をクリックしたときにユーザーの詳細を読み込みたい。そこで、左側がスタンドアロンで、右側のデータがその名前をクリックすることに基づいてロードされる 2 つの列を持つグリッド レイアウトを作成します。

ジャバコード

Display display = PlatformUI.createDisplay();
Shell shell = new Shell(display);
shell.setSize(400, 400);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
shell.setLayout(gridLayout);

shell.setBackground(new Color(display, 255, 255, 255));
final Table table = new Table(shell, SWT.VIRTUAL);
table.setLayout(new GridLayout());
table.setSize(400, 400);
final TableColumn column = new TableColumn(table, SWT.LEFT);
column.setWidth(150);
column.setText("Runnable Services");
table.setItemCount(5);
final String[] services = new String[] { "Franklin", "Christian",
    "Richard Levi",
    "Dale Steyn", "Chris Gayle" };
table.addListener(SWT.SetData, new Listener() {
    public void handleEvent(Event event) {
    TableItem item = (TableItem) event.item;
    int index = table.indexOf(item);
    item.setText(services[index]);
    System.out.println(item.getText());
    }
});

table.addSelectionListener(new OnClickListener());
alignCenter(shell, display);
shell.open();

table に選択リスナーを追加しました。プレーヤーをクリックすると、SelectionListener のウィジェット Selected method に詳細が追加されます。

ジャバコード

Composite parent = new Composite(table.getParent(), SWT.NONE);
parent.setLayout(new GridLayout(2, false));
Label label = new Label(parent, SWT.NULL);
label.setText("Name :");
System.out.println(table.getSelection()[0].getText());
Text text = new Text(parent, SWT.BORDER);
text.setText(table.getSelection()[0].getText());
text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
            | GridData.GRAB_HORIZONTAL));
ViewActionDelegate.resize(200, true, 20, table.getShell());

データが既存のシェルに追加されるたびにクリックアクションでこれが好きだった場合。右側の詳細をクリアするにはどうすればよいですか? . 以下に画像を掲載しました。 ここに画像の説明を入力

これどうやってするの ?.

4

1 に答える 1

0

最後に答えを見つけました。

問題: 作成済みのコンポジットに新しい要素を追加します。

解決策: 新しい要素を描画する前に、既存のコンポジットから要素をクリアします。

Java コード :

if ((composite != null) && (!composite.isDisposed())) {
             Control[] children = composite2.getChildren();
             for(Control ch : children){
                 ch.dispose();
             }
            }
于 2012-06-01T09:03:38.003 に答える