0
我有一个SWT文本小部件。我在窗口小部件里面有文本,比如说“B for Bat”,我选择了它的一部分(通过鼠标和键盘),即“蝙蝠”并通过按钮触发事件,其中我的代码用“球” 。所以我最终的输出是“B for Ball”。如何用新文本替换仅SWT中的选定文本
我该如何做到这一点。请帮我
我有一个SWT文本小部件。我在窗口小部件里面有文本,比如说“B for Bat”,我选择了它的一部分(通过鼠标和键盘),即“蝙蝠”并通过按钮触发事件,其中我的代码用“球” 。所以我最终的输出是“B for Ball”。如何用新文本替换仅SWT中的选定文本
我该如何做到这一点。请帮我
这将解决你的问题:
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();
}
的关键部分使用Text#getSelection()
,它会返回一个Point
其x
坐标选择的开始和y
坐标的结束选择。
您可能想要为空选择添加检查。
BTW:请随时张贴的内容你已经尝试自己...
感谢的快速反应。 getSelection()至关重要 – kk331317 2013-04-28 18:14:36
@ kk331317不客气。 – Baz 2013-04-28 18:16:32