gpt4 book ai didi

java - 有关 SWT 变量声明顺序的问题

转载 作者:行者123 更新时间:2023-12-01 13:26:13 25 4
gpt4 key购买 nike

我正在使用 SWT 开发一个简单的 Java 应用程序作为用户界面。一切工作正常,但我在变量声明顺序方面遇到了一些问题(这是我的第一个 SWT 应用程序)。

我有两个按钮,名为 btnStop 和 btnStart,并附加了一个 SelectionAdapter 事件。

这是他们应该有的行为:

  • 当我单击按钮 btnStart 时,其事件必须将 btnStard 设置为禁用并启用 btnStop;
  • 按钮 btnStop 也是如此:另一个事件必须禁用 btnStop 本身并启用 btnStart。

事实是:如果我在 btnStart 之前声明 btnStop,则前者的事件无法将后者设置为禁用,反之亦然,因为 Eclipse 表示两个变量之一(取决于声明顺序)尚未初始化。

这是部分代码:

 final Button btnStop = new Button(shlFinalFantasyXiv, SWT.NONE);

btnStop.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Check.keepPinging = false;
comboServer.setEnabled(true);
btnStart.setEnabled(true); // <- ERROR HERE
btnStop.setEnabled(false);

}
});
btnStop.setBounds(357, 106, 75, 25);
btnStop.setText("Stop");

final Button btnStart = new Button(shlFinalFantasyXiv, SWT.NONE);

btnStart.addSelectionListener(new SelectionAdapter() {

// some stuff
}

如果您有任何建议,我们将不胜感激。预先感谢您的帮助。

最佳答案

在声明两个按钮之前不要设置选择监听器:

final Button btnStop = new Button(shlFinalFantasyXiv, SWT.NONE);
// set text, layout

final Button btnStart = new Button(shlFinalFantasyXiv, SWT.NONE);
// set text, layout

btnStop.addSelectionListener(new SelectionAdapter() {
// code
}

btnStart.addSelectionListener(new SelectionAdapter() {
// some stuff
}

顺便了解一下如何使用Layouts布置您的控件。使用 setBounds 意味着如果更改使用的字体,事情就会变得困惑。

关于java - 有关 SWT 变量声明顺序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21797935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com