在我的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