我有一个SWT Text小部件。我在小部件中有文字说例如“B for Bat”并且我选择(通过鼠标和键盘)它的一部分即“Bat”并通过按钮触发事件,其中我有我的代码替换为“Ball” 。所以我的最终输出是“B for Ball”。
我如何实现这一目标。请帮帮我
答案 0 :(得分: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();
}
关键部分是使用Text#getSelection()
,它将返回Point
,x
坐标是选择的开头,y
坐标是选择的结束
您可能想要为空选择添加检查。