我有一个 SWT 文本小部件。我在小部件中有文本,例如“B for Bat”,我选择(通过鼠标和键盘)它的一部分,即“Bat”并通过一个按钮触发一个事件,其中我有我的代码替换为“Ball” . 所以我的最终输出将是“B for Ball”。
我如何做到这一点。请帮我
这将解决您的问题:
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
坐标是选择的结束。
您可能想要添加对空选择的检查。
顺便说一句:请始终发布您自己尝试过的内容...