【问题标题】:How to synchronize changes in Eclipse RCP?如何同步 Eclipse RCP 中的更改?
【发布时间】:2013-05-24 07:22:35
【问题描述】:

我有一个带有 tableviewer 的视图和另一个带有文本小部件的视图。当我在表格查看器中选择某些内容时,所选文本会显示在文本小部件中,我可以编辑该文本。如何在编辑时使用文本小部件中的文本更新表格查看器?

【问题讨论】:

  • 我确信 tableViewer 将允许您添加 onSelect 事件处理程序。注册您的事件处理程序并检查事件并获取树的文本.. 将其设置为文本框
  • 我可以设置文本到文本框。但在那之后,如果我更改文本框中的文本,我需要更新表格中的文本以显示文本框中的文本。

标签: java swt eclipse-rcp jface


【解决方案1】:

您只需要在Text 中收听SWT.Verify 并相应地更新TableViewer 数据:

public static void main(String[] args)
{
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setText("StackOverflow");

    final Text text = new Text(shell, SWT.BORDER);

    text.addListener(SWT.Verify, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            String oldString = text.getText();
            String newString = oldString.substring(0, e.start) + e.text + oldString.substring(e.end);

            /* SET STRING TO TABLEVIEWER DATA HERE */

            System.out.println(newString);
        }
    });

    shell.pack();
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

或者,如果您只想在用户完成文本更改后更新表格,请改为在 Text 上收听 SWT.FocusOut

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 2011-09-27
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多