【问题标题】:Java (JFace Application Window) Setting external label textJava(JFace 应用程序窗口)设置外部标签文本
【发布时间】:2015-03-02 20:28:12
【问题描述】:

我正在寻找如何在外部应用程序窗口上设置标签文本。

我有什么:

到目前为止,我有 两个窗口。第一个是用户启动程序时将出现的主应用程序窗口。第二个窗口是我创建的另一个单独的窗口专门显示自定义错误窗口。

问题:我似乎无法调用我在错误窗口中创建的标签并将文本设置为自定义内容。为什么?我希望能够多次重复使用这个窗口!此窗口用于处理无效输入或应用程序无法读取/保存到文件时的错误处理。

我打算发布屏幕截图,但您需要 10 个代表。它会更好地解释一切。

这是 Error_dialog 窗口中标签的代码:

Label Error_label = new Label(container, SWT.NONE);
Error_label.setBounds(10, 10, 348, 13);
Error_label.setText("Label I actively want to change!");

这是我想在满足时触发的条件:

if(AvailableSpaces == 10){
//Set the label text HERE and then open the window!
    showError.open();
}

我也把它放在了班级的顶部:

Error_dialog showError = new Error_dialog();

【问题讨论】:

  • “找不到标签”是什么意思?
  • @greg-449 例如,设置诸如窗口状态之类的内容,您将键入 showError.setStatus("Hello World!");我怎样才能调用标签?我想从主应用程序窗口调用标签并设置文本。

标签: java label jface applicationwindow


【解决方案1】:

只需将标签保存为对话框类中的字段并添加“setter”方法即可。比如:

public class ErrorDialog extends Dialog
{
  private Label errorLabel;

  ... other code

  public void setText(String text)
  {
    if (errorLabel != null && !errorLabel.isDisposed()) {
      errorLabel.setText(text);
    }
  }

你需要像这样使用你的对话框:

 ErrorDialog dialog = new ErrorDialog(shell);

 dialog.create();  // Creates the controls

 dialog.setText("Error message");

 dialog.open();

注意:你应该遵守 Java 变量名的规则——它们总是以小写字母开头。

进一步学习使用Layouts。如果用户使用不同的字体,使用setBounds 会导致问题。

【讨论】:

  • 感谢您的回答。我还没有时间尝试一下。也感谢您指出我的变量名。我会改变这些,因为我经常忘记什么是什么。我应该尝试更频繁地遵守文档。不过,有时它可能真的很无聊和冗长......
  • 我还想指出,这个应用程序不会出现。这只是一个实验性的应用程序。我知道任何其他布局都比绝对布局要好...我只是不会为那些只会添加到档案中的东西而烦恼。
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 2013-04-06
  • 1970-01-01
  • 2012-09-03
相关资源
最近更新 更多