ガイド付きの支援が必要です。Tables と TableViewers のコード例に取り組み、作業に取り掛かることができました。しかし、パーティクルのセットアップに役立つ例が見つかりません。
私を正しい方向に導いてください。
私のクラス:
AHandler.java - これにより、ユーザーはマウスの右クリックからデータを選択できます。実行中に、シングルトン クラスを呼び出して、ユーザーが選択したデータを配列リストに追加しています。
ASelectedData.getInstance().add(tcRevision, selectedDataset);
ASelectedData.java - ユーザーの選択が ArrayList に追加されるシングルトン クラスです。
ABase.java - このダイアログは、メニューをクリックして開きます。ダイアログには、ArrayList の値を含むテーブルが表示されます。他のアクションを実行するいくつかのボタン。
私が今持っている方法は、テーブルとテーブルビューアーが ABase.java クラスで作成されていることです。テーブルの情報を取得しています。
viewer.setContentProvider(new ArrayContentProvider());
viewer.setInput(AplotSelectedDataTable.getInstance().getArrayData());
これにより、テーブルに正しいデータが入力されます。
しかし、ABase.java クラスは MODELESS です。そのダイアログが開いている理由は、ユーザーがマウスの右ボタンを使用して配列リストに追加してデータを選択し続けることができるためです。しかし、テーブルをコーディングした方法では、ウィンドウを再度開いてデータを更新する必要があります。
* EDIT * *** メイン GUI で TableViewer を作成しました。TableViewer は、別のクラスの arraylist からのデータを表示するテーブルを作成します。問題は、ユーザーがまだメイン アプリケーション GUI (アプリケーション GUI ではない) に移動し、GUI がまだ開いている間にさらにデータを選択できることです。テーブルを選択すると、テーブルに追加された新しいデータが表示されることを期待しています。
問題は、新しいデータが到着したことをテーブルに伝える方法がないため、テーブルを更新することです。データを取得して ArrayList に追加する Add メソッドは、ASelectedData クラスにあります。テーブルビューアが作成されたクラスではありません。
Add メソッドが実行されたときに、テーブルを更新するように指示する方法が必要です。問題は、テーブルとメソッドが 2 つの別々のクラスにあることです。
これがより理にかなっていることを願っています
編集*
TableViewer を使用したメイン GUI
public AplotBaseDialog(Shell shell, TCSession theSession) Constructor
//////////////////////////////////////////////////////////////////////////
// createTableViewer() //
//////////////////////////////////////////////////////////////////////////
private TableViewer createTableViewer(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
createColumns(parent, viewer);
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
viewer.setContentProvider(new ArrayContentProvider());
viewer.setInput(AplotSelectedDataTable.getInstance().getArrayData());
// Layout the viewer
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.FILL;
gridData.horizontalSpan = 2;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
viewer.getControl().setLayoutData(gridData);
return viewer;
}
//////////////////////////////////////////////////////////////////////////
// updateTableViewer() //
//////////////////////////////////////////////////////////////////////////
public void updateTableViewer() {
viewer.refresh();
}
他のクラスに追加されたコード
AplotBaseDialog abd = new AplotBaseDialog(null, null);
public void add(TCComponentItemRevision tcRevision, TCComponentDataset selectedDataset) {
AplotDatasetData pp = new AplotDatasetData(tcRevision, selectedDataset);
if (!dataArrayList.contains(pp)) {
dataArrayList.add(pp);
}
abd.updateTableViewer();
}// end add()