gpt4 book ai didi

java - 对非静态 JFrame 进行静态引用?

转载 作者:行者123 更新时间:2023-12-01 10:19:09 25 4
gpt4 key购买 nike

我正在尝试将基于终端的猜谜游戏变成基于 GUI 的游戏。我的问题是,当我将所有代码放入 main 方法中时,总是会出现问题。

我想我应该最后编写 main 方法,这是使 GUI 可见的唯一工作,但我无法对非静态 JFrame 变量 frame 进行静态引用。我对 Java 和一般编程都很陌生,此时我只是不知所措。

代码

public class GuiGuess extends JPanel implements ActionListener{
JTextField guessField = new JTextField("Your Guess");
JTextField minField = new JTextField ("Minimum Boundary");
JTextField maxField = new JTextField ("Maximum Boundary");
JTextArea outputArea;
JButton checkButton;
JFrame frame = new JFrame("Guessing Game");

public GuiGuess(){
JFrame frame = new JFrame("Guessing Game");

JPanel textHolder = new JPanel();
JPanel buttonHolder = new JPanel();

textHolder.add(minField);
textHolder.add(maxField);
textHolder.add(guessField);
textHolder.add(outputArea);

buttonHolder.add(checkButton);

frame.getContentPane().add(textHolder, "North");
frame.getContentPane().add(buttonHolder, "South");
frame.setVisible(true);

checkButton.addActionListener(this);
}


int numGuesses = 0;
int counter = 0;
int guess = Integer.parseInt(guessField.getText());
public void actionPerformed(ActionEvent e){
if (counter < 1){
int min = Integer.parseInt(minField.getText());
int max = Integer.parseInt(maxField.getText());
int numToGuess = min + (int)(Math.random()*max);
}
guess = Integer.parseInt(guessField.getText());
numGuesses++;
counter++;
if (guess < numToGuess){
outputArea.setText("Your guess is too low");
}
else if (guess > numToGuess){
outputArea.setText("Your guess is too high");
}
else if (guess == numToGuess){
outputArea.setText("You Win! It took you "+numGuesses +"Tries!");
}

}

public static void main(String Args[]){
frame.setVisible(true);

}

}

最佳答案

错误的选择:使frame静态。

更好:在 GuiGuess 中创建一个方法:

public void show() {
frame.setVisible(true);
}

并在您的main中:

 GuiGuess gGuess = new GuiGuess();
gGuess.show();

因为frameGuiGuess类的成员变量,因此改变它的状态应该经过GuiGuess

关于java - 对非静态 JFrame 进行静态引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35732186/

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