gpt4 book ai didi

java - 从另一个类访问静态变量

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:52 24 4
gpt4 key购买 nike

我在同一个包中有两个类。我在一个类中声明了一个静态变量,并想在另一个类中访问该变量。

这是我声明静态变量的代码

public class wampusGUI extends javax.swing.JFrame {

static String userCommand;

public wampusGUI() {
initComponents();
}

public void setTextArea(String text) {
displayTextArea.append(text);
}

private void enterButtonActionPerformed(java.awt.event.ActionEvent evt) {
userCommand = commandText.getText();
}

public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
wampusGUI w = new wampusGUI();
w.setVisible(true);
Game g = new Game(w);
g.play();
}
});
}
}

这是我要访问变量的代码

public class Game {

private wampusGUI gui;

public Game(wampusGUI w) {
world = new World();
world.start();
gui = w;
}

public void play() {
gui.setTextArea(welcome());
gui.setTextArea(describe());
for (;;) {
String s = userCommand; // here value should come should
System.out.println(userCommand);
Command c = Command.create(s);
String r = c.perform(world);
// is game over?
if (r == null) {
break;
}
System.out.println(r);
}
System.out.println("Game over");
}
}

但是,我可以将来自第一类的变量作为参数传递。但问题是,当我运行程序时,值第一次变为空,这是我不想要的。我想当我在 textfield 中输入值时,它应该转到另一个类。

谢谢。

最佳答案

看看你的代码,你似乎想用特定的文本向你的用户显示对话框

gui.setTextArea(welcome());
gui.setTextArea(describe());

有时,该对话框应该捕获随后处理的用户输入。

  1. 那些 setTextArea 调用不是您想要使用的。用户永远不会看到欢迎消息,因为它会立即被描述消息取代。
  2. 确保您没有阻塞事件调度线程 (EDT),否则根本不会显示任何内容。我不知道您的 Command 类会做什么,但我在 Event Dispatch Thread 上看到一个无限循环,这绝不是一件好事。看看 Concurrency in Swing tutorial了解更多信息
  3. 感谢 for 循环,用户将无法输入任何命令,因为 EDT 正忙于处理您的循环。您需要的是允许用户提供输入的阻塞调用(不阻塞 EDT,而只是阻塞代码的执行)。 JOptionPane 中的静态方法类非常适合这个(例如 JOptionPane#showInputDialog)。这些方法还有一种机制,无需任何静态变量即可将用户输入传回调用代码,从而解决您的问题。

关于java - 从另一个类访问静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398887/

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