【问题标题】:Add numeric values to a variable in ActionListener, to show variable result将数值添加到 ActionListener 中的变量,以显示变量结果
【发布时间】:2013-10-30 17:13:44
【问题描述】:

我需要做什么:

这是基本的,询问用户问题,然后在最终应用程序中提供结果。我在不同的 JPanel 上提出了问题,当用户点击一个选项时,我想记录他的选择并移至下一个问题。最终的 JPanel 将根据用户的选择显示结果。

我是怎么做的:

  1. 启动一个变量。 int R=0;
  2. 在按钮的 ActionListener 中,我使用 set.Visible();转到下一个问题 (JPanel),并且 R=R+数值。
  3. 选择不同的选项后,变量R会加上不同的数值。并使用R的总和,即最终值,来显示适当的结果。

if(R=150) { Show this or that result; }

怎么了:

主要我有一个 System.out.println(R);行自己检查结果。它要求我将变量 R 设为静态。因此,到目前为止,我什至看不到 R 的值是否在每个 actionlistener 处更新,更不用说显示结果了。

如果我对这种事情使用正确的方法,也建议。我是初学者,所以我不知道人们通常如何做到这一点。如果没有,请告诉我正确的方法。

【问题讨论】:

  • 使用模型。基本上,创建一个能够在屏幕之间维护所需信息并知道如何处理新信息的模型。根据需要将模型传递给每个动作侦听器。最后从模型中提取值
  • 该模型还可以导出 Action 向侦听器触发通知的实例。
  • 嗯..我不知道你提到的模型。你能否详细说明一下。或者也许给我一个链接。谢谢

标签: java swing expert-system


【解决方案1】:

在 Java 中,main 是一个静态方法,这就是为什么您会收到关于 R 需要静态才能访问的错误。尝试将 R 放入类实例中,您应该能够轻松打印它。创建一个 Bean 或 Model 类来保留 R 并处理切换可以让您将逻辑与 GUI 完全分离,并让您远离令人讨厌的静态问题作为副作用。

【讨论】:

    【解决方案2】:

    正确的方法是在扩展 JFrame 的类中创建一个非静态变量。现在您的每个按钮都可以访问它。所以现在相应地增加。要在 main 方法中访问此变量,您必须使用 obj.R,其中 obj 是扩展 JFrame 的类的对象(我相信这就是您开始应用程序的方式)。

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 1970-01-01
      • 2017-05-29
      • 2015-09-23
      • 2020-05-30
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多