私の状況を少し説明させてください。私は Java SE SWT アプリケーションに SWT を持っています。アプリの実行中に、 TextUSER が作成されたものに何か ( String) を書き込むとします。まさにこれを行うTextいくつかを紹介したいと思います: USER がオブジェクト/ウィジェットをクリックすると、これ自体が clear( ) されます (以前に何らかの文字列が書き込まれている場合)。MouseListenerTextTextsetText("");
MouseListenerには 3 つのメソッドがあります: mouseDown(...)、mouseUp(..)、mouseDoubleClick(...)->mouseDown(...)この場合にのみ使用する必要があります。これ以上は必要ありません。
mouseDown(..)メソッドでは、実際の Text オブジェクト参照のメソッドを呼び出す必要があります:マウス"XY".setText("");でクリックしたテキスト。→これはどうにか入手できませんでした。
MouseListener onMouseClickTextアプリで使用する任意の SWT に適用できる一般的なText方法を使用したいと考えています。
そのような方法またはより良い方法を知っている人はいますかMouseListener:既存のクリックされた SWT へのこの参照をText内部で取得する方法は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()");
}
};
}