0

我有一个 SWT 文本小部件。我在小部件中有文本,例如“B for Bat”,我选择(通过鼠标和键盘)它的一部分,即“Bat”并通过一个按钮触发一个事件,其中我有我的代码替换为“Ball” . 所以我的最终输出将是“B for Ball”。

我如何做到这一点。请帮我

4

1 回答 1

2

这将解决您的问题:

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

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

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Replace");
    button.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            String content = text.getText();
            Point selection = text.getSelection();

            /* Get the first non-selected part, add "Ball" and get the second non-selected part */
            content = content.substring(0, selection.x) + "Ball" + content.substring(selection.y, content.length());

            text.setText(content);
        }
    });

    shell.pack();
    shell.setSize(400,shell.getSize().y);
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

关键部分是 using Text#getSelection(),它将返回 a Point,其x坐标是选择的开始,y坐标是选择的结束。

您可能想要添加对空选择的检查。


顺便说一句:请始终发布您自己尝试过的内容...

于 2013-04-28T17:58:07.000 回答