我有一个向导页面,其中包含一个包含5列的Jface TableViewer。向导页面还包含“添加”和“删除”按钮。单击“添加”按钮时,将打开一个新的“对话框”,其中包含3个文本框和2个组合框,用户可在其中输入详细信息。
到目前为止一切都很好,但我想知道如何获取文本框和组合框的内容(在用户单击对话框中的“确定”按钮后)并将相同的内容存储在表中我的向导页面的查看器?我是否需要使用MouseListener并覆盖鼠标按下方法并在鼠标按下方法中写入逻辑以获取内容?或者还有其他方法吗?要获取内容,我只是简单地说:
TextBox txt = new TextBox(shell, SWT.BORDER);
String txtContents = txt.getText();
获取对话框窗口内容并将数据存储在表中的方法是什么?
当用户点击对话框的“删除”按钮时,如何删除表格中的选定行?
答案 0 :(得分:0)
获取文本框内容并将其存储在公共静态变量中,然后您可以在表查看器中访问该变量:
public static String txtContents;
txtContents = txt.getText();
通过在按钮侦听器中添加行索引来获取行索引:
String rowIdx = event.widget.getData(----);
将其解析为整数并从表中删除所选行:
table.remove(int rowIdx);
答案 1 :(得分:0)
最好的做法是构建一个模型,用于存储对话框中控件的值,并通过设置为表输入的模型列表来操作表中元素的添加和删除。
DialogModel
List<DialogModel> tableViewerEntries;
作为要设置为表输入的类成员。即,tableViewer.setInput(tableViewerEntries);
按下对话框中的确定按钮时,请执行以下操作:
DialogModel model = new DialogModel();
...
@Override
protected void okPressed() {
model.setAttribute1(text1.getText());
model.setAttribute2(combo1.getText()); // or use getItem(selectedItemIndex);
...
}
在对话框类中创建一个返回模型的公共方法。说,getModel()
;
在“添加”按钮的选择侦听器中,执行
if(dialog.open == SWT.OK) {
// using a getter method, get the model from the dialog.
DialogModel dialogModel = dialog.getModel();
// add it to the list of models set as input to the tableViewer
tableViewerEntries.add(dialogModel);
// Refresh table to set the new element in the tableviewer.
tableViewer.refresh();
}
要删除,只需从表条目列表中删除所选模型。
// remove the selected element from the list of DialogModels set as Table Input.
int index = tableViewer.getTable().getSelectionIndex();
tableViewerEntries.remove(index);
tableViewer.refresh();
应相应调整表查看器的内容和标签提供程序,以将模型属性显示为单元格值。我假设你熟悉它们。