【问题标题】:Opening a dialog box from a table cell button从表格单元格按钮打开对话框
【发布时间】:2012-10-17 21:16:30
【问题描述】:

我需要允许我的用户编辑我的表中的文件名值。因此,在我的 tableviewer 中,我添加了代码以在最后一列中创建和显示编辑按钮。我有这个工作。

当他们单击编辑按钮时,我希望在带有保存和取消按钮的文本框中打开一个带有文件名的对话框。

所以我创建了 FileNameDialog 类。

我的问题是:我在哪里创建对话框?

  • 我是否在基本对话框中创建一个方法并从 tableviewer 调用该方法


class SelectionListener implements Listener {
    TableItem item;
    Button editButton;
    Object element;

    public SelectionListener(TableItem item, Button deleteButton, Object element) {
        this.item = item;
        this.editButton = deleteButton;
        this.element = element;
    }

    public void handleEvent(Event event) {
        AplotPDFDataModel.FileNameData selected = (( AplotPDFDataModel.FileNameData)element);
        int index = AplotPDFDataModel.getInstance().getIndexOf(selected);
        pdfDialog.showEditFileNameDialog();  <<++++++++HERE

        Table table = getTable();
        table.getColumn(5).pack();
        table.getColumn(5).setWidth(100);
    }
} // End SelectionListener Class
  • 我是否只是在 tableviewer 中创建一个方法并在那里创建对话框?


public void showEditFileNameDialog() {
    editFileNameDialog = new EditFileNameDialog(getShell());
    editFileNameDialog.create();
    editFileNameDialog.getShell().setSize(300, 200);
    editFileNameDialog.open();  
}

在表格查看器中单击按钮打开对话框的最佳过程是什么?

【问题讨论】:

  • 我不太明白你的问题。这两个选项是什么?通常,您只需在ListenerhandleEvent 方法中创建并显示对话框。
  • 我不知道将对话框代码与 tableviewer 代码混合是否是一种好习惯,但把它放在那里确实有意义。我一直在寻找正确的地方。谢谢
  • 是的,你回答了这个问题。由于我在 tableviewer 中创建这个对话框,我需要从 tableviewer 传递什么到对话框?我需要传入父复合材料,得到一个外壳吗?我必须传递任何东西吗?我正在裁判我的对话框类的构造函数

标签: java dialog swt tableviewer


【解决方案1】:

通常您只需在ListenerhandleEvent 方法中创建并显示Dialog

要获得Shell,您可以将其交给Dialog,以下任一方法都可以:

new EditFileNameDialog(getTable().getShell());

new EditFileNameDialog(new Shell());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2018-05-23
    相关资源
    最近更新 更多