从Java SWT中的事件处理程序访问窗口小部件

时间:2015-10-20 16:26:04

标签: java swt

我尝试使用Java SWT设计一个带有UI的小型Java应用程序:在Eclipse中,我创建了一个新的应用程序窗口,并添加了一个按钮和一个标签。我想要的是,当我点击按钮时,标签的文字改变为" Not Clicked"到"点击"。为此,我为按钮>>> print Records*10 Var1 Var2 Var3 Number 1 4 5 6 2 10 11 12 添加了一个事件处理程序。

但是,我发现我无法从事件处理程序中访问标签,因此我可以更改它的文本。

SelectionEvent

我意识到这可能是一个愚蠢的问题,但我一直在寻找一个无效的解决方案。我是使用Java小部件的新手(直到现在才在VS中使用C#。)

2 个答案:

答案 0 :(得分:1)

在引用之前,您必须声明lblStatus。在JavaScript中没有提升。现在,您在事件处理程序之后声明了标签。

答案 1 :(得分:1)

要访问lblStatus,您应该将其声明为类实例变量。

public class MyClass {
    Label lblStatus;

protected void createContents() {
    shell = new Shell();
    shell.setSize(450, 300);
    shell.setText("SWT Application");

    Button btnClickMe = new Button(shell, SWT.NONE);
    btnClickMe.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent arg0) {
            lblStatus.setText("Clicked"); // the compiler is aware of lblStatus
        }
    });
    btnClickMe.setBounds(10, 10, 75, 25);
    btnClickMe.setText("Click Me");

    lblStatus = new Label(shell, SWT.NONE);
    lblStatus.setBounds(10, 47, 75, 15);
    lblStatus.setText("Not clicked.");

}
}