【问题标题】:Java GUI Netbeans, display output in textarea from class in another packageJava GUI Netbeans,在另一个包中的类的文本区域中显示输出
【发布时间】:2012-04-04 13:28:41
【问题描述】:

我需要在netbeans的java swing GUI测试区中显示我用标准java编程(在Main clas中)编译的计算结果,但我总是遇到问题。我敢打赌问题是因为我的要打印的字符串在 GUI 类中不可用,这是我在 swing 中的部分代码

private void predictActionPerformed(java.awt.event.ActionEvent evt) {                                        

        TextArea1.setText(Engine.Print.printresult(toarray));
        //JOptionPane.showMessageDialog(null,Engine.Print.printresult(toarray));
    //       TextArea1.setText(Retrieving.main(args));
    } 

这是引擎包中的代码,打印类,方法 printresult,String[]printresult 是从另一个类传递的,它可以在没有 GUI 的情况下直接运行:

 public static void printresult(String[]toarray){
  for(int a=0; a<toarray.length;a++){
    System.out.println(toarray[a]);
  }

真的需要帮助。谢谢

【问题讨论】:

  • 您确定要将控制台程序与 Swing 程序混合使用吗?你为什么要这样做?也许您向我们展示了引擎包中的错误方法,因为在 GUI 程序中确实没有任何位置可以使用 System.out.println(...),除非可能是出于调试目的。
  • 当然例外是如果您必须将标准 OutputStream 重定向到您的 JTextArea,例如我在今天早些时候的回答中显示:how to visualize console java in JFrame/JPanel,但这对于这个问题通常最好用其他更简单的方法来解决。
  • 您的意思是要在 NetBeans Test Results 窗口中显示 JUnit @Test 结果?
  • 实际上我需要在 swing 文本区域中显示我的控制台计算值,因为该程序需要使用 GUI 进行可视化,我认为不可能将所有代码复制到 GUI 中,因为它包含几个类,所以我只需要将结果发送到 GUI swing textarea 但我不知道该怎么做。谁能告诉我该怎么做,因为这种方式行不通。谢谢
  • 请学习java命名约定并遵守它们

标签: java swing netbeans


【解决方案1】:

你说:

实际上我需要在 swing 文本区域中显示我的控制台计算值,因为该程序需要使用 GUI 进行可视化,我认为不可能将所有代码复制到 GUI 中,因为它包含多个类,所以我只需要将结果发送到 GUI swing textarea 但我不知道该怎么做。谁能告诉我该怎么做,因为这种方式行不通。

您首先需要做的是重新编写计算代码。您没有向我们展示任何代码,这使得无法猜测它在做什么或做错了什么,但我怀疑它会进行计算并将它们打印到控制台,这不适用于 GUI。
我建议您对非 GUI 计算代码执行的操作:

  • 同样,首先,重新编写您的计算代码,使其成为适当的 OOP 类
  • 它应该包括私有实例字段、至少一个构造函数和公共方法,以允许将信息传递给此类,以及从类中提取结果的方法,尽管有些方法可以同时实现这两种功能。这些代码都不会涉及到控制台的 println,除非这是出于调试目的,并且认为这些行将在最终的“生产”代码中删除。
  • 上面描述的这个或多个类将成为您的“模型”或 GUI 背后的大脑。
  • 它应该没有(或非常有限)关于 GUI 的知识(它应该是 GUI“不可知的”)并且编写得足够灵活,以便它可以被 Swing GUI、控制台程序或任何其他您可以使用的用户界面使用想想。
  • 如果您想变得花哨,请为您的模型提供一个 PropertyChangeSupport 对象,以便 GUI 可以“监听”模型的更改并响应这些更改。

我建议你为你的 GUI 显示代码做什么:

  • 这将是您的“视图”模型,并且它也必须按照面向对象编程的原则编写。
  • 为视图提供我们上面描述的模型的实例字段。换句话说,您的视图将在其中包含一个模型对象。
  • 让您的视图控制器或侦听器与模型交互。例如,如果按下了 JButton,则让其 ActionListener 通知模型(通过调用适当的方法)该按钮已被按下。如果模型需要来自 GUI 的信息,例如 JTextFields 中保存的文本,则 ActionListener 将提取此文本,然后使用方法参数将信息传递给模型。
  • 让您的 GUI 注册为模型的“侦听器”,可能使用 PropertyChangeListener,这样它就可以响应模型状态的变化。

这些建议非常通用,因此可能对您或我希望的帮助不大,但鉴于我们对您的问题了解的信息有限,这是必要的。如需更具体的帮助,请向我们提供有关您的问题和代码的更具体和详细的​​信息。

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2018-09-23
    • 2010-10-14
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多