【问题标题】:GUI Java Netbeans multiple classesGUI Java Netbeans 多个类
【发布时间】:2012-05-25 20:27:34
【问题描述】:

这是非常基本的,但我什至不知道如何搜索任何我需要的东西。 我创建了一个系统,其中包含几个类和两个通过套接字相互通信的项目。

现在我的目标是使用 Netbeans 的设计器为系统创建一个 GUI,但在将 GUI 与其他类进行通信时,我有点陷入困境。

  1. GUI 应该是我的主类吗?
  2. 如果没有,我如何向我的 GUI 类发送消息。
  3. 当我尝试在 GUI 的 run 方法中执行以下操作时,例如 JTextField.setText("PleaseHelp");,我收到一条错误消息:无法从静态上下文引用非静态变量 JTextField。

我知道我不是在要求特定的东西,但我不知道如何搜索我需要的东西。我得到的只是关于如何制作简单的计算器 GUI 的教程,因为只有一个类,JFrame

【问题讨论】:

  • 可以将 GUI 作为主类,但请确保将您的通信和 GUI 代码保持在单独的类中并在单独的线程上运行。关于“静态上下文中的非静态变量”,这意味着您正在尝试从静态方法中访问您的类字段。不要这样做。只有 main 方法和可能的 createGui() 方法(创建 GUI 类并将其设置为可见)应该是静态的,其余的应该是非静态的。阅读有关 OOP 和 Java 的更多信息。

标签: java swing sockets user-interface netbeans


【解决方案1】:
  1. 如果 GUI 是一个单独的类会更好,因为模块化的应用程序更易于维护。
  2. 与所有面向对象的代码一样,您需要一个对 GUI 类实例的引用。
  3. JTextField 是一个类,setText 不是静态的。您需要引用您要更改的JTextField

基本上,它应该是这样的:

GUI gui = new GUI(/*Parameters*/);
gui.getTextField().setText("PleaseHelp");

其中getTextField 是GUI 类的方法(将此添加到Netbeans GUI 设计器创建的类中):

public JTextField getTextField(){
  return /*TODO:  Enter text field name here*/;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多