私のRCPアプリケーションでは、タブフォルダウィジェットがあります。タブフォルダウィジェットの各タブ項目は、単一の表を保持します。タブ項目(特定のホールの名前を表す)は動的であり、タブ項目が動的に作成されるたびに、そのタブ項目内に表示されるように表が作成されます。タブ項目は、タブフォルダ内の各項目のテーブル(およびテーブルの内容も)とともに動的に作成されます。動的に生成されたSWTテーブルからの選択値の取得
最初のテーブル(または最後のタブ以外のタブ)のテーブルでユーザーが選択した値を取得しようとすると、値を取得できません。私は最後のタブ項目でテーブル を取り出して操作することができます。前のタブ項目の前の表は、後で動的に作成される新しい表で置き換えられ/重複しているようです。これをどうすれば解決できますか?例えば
、
//createPartControl method
public void createPartControl(Composite parent) {
.....
.....
createTabFolder();
}
// createTabFolder() method
private void createTabFolder() {
tabFolder = new CTabFolder(comMainContainer, SWT.BORDER);
tabFolder.setBounds(204, 21, 769, 495);
tabFolder.setSelectionBackground(Display.getCurrent().getSystemColor(
SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
// display the tabitems in the tabfolder dynamically
try {
selectedDate = sdf.format(dateChooser.getSelectedDate());
rs = objHallBookingController.getHallList();
while (rs.next()) {
displayCtabItems(rs.getString("hall_name"),
rs.getInt("hall_id"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// displayCtabItems method
private void displayCtabItems(String hallName, int hallId) {
tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(hallName);
comTabItem = new Composite(tabFolder, SWT.NONE);
tabItem.setControl(comTabItem);
tblHallBooking = new Table(comTabItem, SWT.BORDER | SWT.FULL_SELECTION);
tblHallBooking.setHeaderVisible(true);
tblHallBooking.setLinesVisible(true);
tblclmnTime = new TableColumn(tblHallBooking[hallId], SWT.NONE);
tblclmnTime.setWidth(88);
tblclmnTime.setText("Time");
tblclmnTitle = new TableColumn(tblHallBooking[hallId], SWT.NONE);
tblclmnTitle.setWidth(306);
tblclmnTitle.setText("Title");
// display contents in the table; working fine
displayHallOpeningTime(Integer.parseInt(txtHallId.getText()));
}
このコードは、タブ項目とテーブルを生成して表示します。しかし、最後のもの以外のタブ項目のテーブルの内容を操作することはできません。
からあなたのテーブルを取得する方法、方法かもしれない、あなたはいくつかのテストケース(あなたの不要な挙動を示している小さなアプリ)を作成してもらえ..? – Sorceror
編集内容を参照して、質問にコードサンプルを追加しました。 – mannyee