让我描述一下我的情况,我Text
的 Java SE SWT 应用程序中有 SWT:假设 USER 将在应用程序运行时String
向创建的内容写入一些东西 ( ) 。Text
我想介绍一些MouseListener
可以做到这一点的东西:当用户点击Text
对象/小部件时,它Text
本身会清除(setText("");
)(如果以前写过一些字符串)。
MouseListener
有 3 种方法:mouseDown(...)
, mouseUp(..)
, mouseDoubleClick(...)
-> 我应该只mouseDown(...)
在这种情况下使用 - 仅此而已。
在mouseDown(..)
方法中,我需要调用实际文本对象引用的方法:"XY".setText("");
通过鼠标点击的文本。-> 这我不知何故无法获得。
我希望它以某种方式像一般应用程序一样应用于我将在我的应用程序中使用的MouseListener onMouseClickText
任何 SWT 。Text
有谁知道如何做到这一点MouseListener
或更好:如何在Text
里面获得对现有点击 SWT 的引用MouseListener
?
这是示例代码:
package sk.tokra.example;
//imports here
.
.
import org.eclipse.swt.widgets.Text;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.
.
public class Application {
//class fields
Text text;
private static final Logger logger = LoggerFactory.getLogger(Application.class);
.
.
.
// main
public static void main(String[] args) {
logger.debug("main(), Starting app!");
try {
Application window = new Application();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
logger.debug("main(), Exiting app!");
return;
}
/**
* Open the window.
*/
public void open() {
logger.debug("open()");
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
text = new Text(shell, SWT.BORDER);
text.addMouseListener(onMouseClickText);
.
.
.
}
//other stuff/methods/listener part
private MouseListener onMouseClickText = new MouseListener() {
@Override
public void mouseUp(MouseEvent arg0) {
logger.debug("onMouseClickFind, mouseUp()");
}
@Override
public void mouseDown(MouseEvent arg0) {
logger.debug("onMouseClickFind, mouseDown()");
// HERE I WOULD NEED to obtain refence of Text
// then call .setText("");
}
@Override
public void mouseDoubleClick(MouseEvent arg0) {
logger.debug("onMouseClickFind, mouseDoubleClick()");
}
};
}