私の状況を少し説明させてください。私は Java SE SWT アプリケーションに SWT を持っています。アプリの実行中に、 Text
USER が作成されたものに何か ( String
) を書き込むとします。まさにこれを行うText
いくつかを紹介したいと思います: USER がオブジェクト/ウィジェットをクリックすると、これ自体が clear( ) されます (以前に何らかの文字列が書き込まれている場合)。MouseListener
Text
Text
setText("");
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()");
}
};
}