0

こんにちは、swt テーブルの次のコードがあります

private Table   folderAssociationTable;
private TableItem            item;
private TableEditor          editor; 

folderAssociationTable = componentsRenderer.createTableWidget(container, SWT.BORDER | SWT.MULTI  | SWT.FULL_SELECTION, 2, true);

        folderAssociationTable.addListener(SWT.MeasureItem, new Listener() {
            public void handleEvent(Event event) {
                event.height = 20;
            }
        });

        componentsRenderer.createTableColumWidget(folderAssociationTable, SWT.CHECK, "Item", 80);
        // add a column to display source folders
        componentsRenderer.createTableColumWidget(folderAssociationTable, 
                SWT.LEFT, PropertyClass.getPropertyLabel(QTLConstants.SOURCE_FOLDER_COLUMN_LABEL), 200);
        // add a column to display target folders
        componentsRenderer.createTableColumWidget(folderAssociationTable,
                SWT.LEFT, PropertyClass.getPropertyLabel(QTLConstants.TARGET_FOLDER_COLUMN_LABEL), 200);

この方法でテーブルデータを追加します

item = new TableItem(folderAssociationTable, SWT.NONE);
                            editor = new TableEditor (folderAssociationTable);

                            Button button = new Button(folderAssociationTable, SWT.CHECK);
                            button.setText("item "+ (i+1));
                            button.pack();
                            editor.minimumWidth = button.getSize ().x;
                            editor.setEditor(button, item, 0);

                            item.setText(1, folderlist[i]);    // add source folder to the first column of the table
                            item.setText(2, targetFolderPath);  // add target folder to the second column of the table
                            sourceTargetFolderMap.put(folderlist[i], targetFolderPath); 

このページのテーブルコンポーネントの外に削除ボタンがあり、そのアクションリスナーで選択した行をテーブルから削除していますが、この場合、テーブルが更新されるとテーブルアイテムのみが更新されますが、テーブルエディターは同じ位置のままです。どうすれば両方を更新できますか削除ボタンをクリックすると、テーブル エディターとテーブル アイテムが表示されます。

4

1 に答える 1

1

ドキュメントに記載されている例を見たことがありますか? これをあなたに追加してくださいActionListener

// to close the old editor
Control oldEditor = editor.getEditor();
if (oldEditor != null) oldEditor.dispose();

// add some logic if you want to open the editor again on a different row
于 2013-02-06T11:29:22.047 に答える