【发布时间】:2020-10-29 01:02:41
【问题描述】:
所以我尝试关闭窗口并在之后重新打开它,以便整个程序从头开始。那没有用。重新验证框架(f.revalidate(),f.repaint())也没有。 我试过用while循环循环if函数,当数字被猜到时将布尔值设置为false。但这只会导致测试数字是否正确的无限循环,因为在单击按钮时会激活循环。
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
import java.util.Random;
public class Zahlenraten{
static int i = 0;
//static boolean w = true;
//static boolean s = true;
static int wert;
// static int Zahl1;
public static void main(String[] args) {
JFrame f = new JFrame("Zahlenraten");
f.setSize(500,500);
//f.setLayout(null);
JTextField t = new JTextField("");
t.setBounds(95,10,150,30);
f.addWindowFocusListener(new WindowAdapter() {
public void windowGainedFocus(WindowEvent e) {
t.requestFocusInWindow();
}
});
JButton e = new JButton("Exit");
e.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
e.setBounds(300, 100, 100, 30);
JLabel txt = new JLabel("Zahl eingeben:");
txt.setBounds(10,10,150,30);
Random r = new Random();
int Zahl = r.nextInt(100-0+1);
JButton b = new JButton("Prüfen");
f.getRootPane().setDefaultButton(b);//Enter Key = button b
b.addActionListener(evt -> {//statt evt könnte man natürlich auch actionPerformed... nehmen.
i++;
/* while(w) {*/
/* while(s) {*///Problem: wert wird endlos getestet, Möglichkeit: Fehler bei Eingabe von String trien und catchen aber wie ??
String str = t.getText();
wert = Integer.parseInt(str);
t.setText("");
if(wert > Zahl) {
System.out.println("Der gesuchte Wert ist kleiner.");
}
if(wert < Zahl) {
System.out.println("Der gesuchte Wert ist größer.");
}
if(wert == Zahl) {
System.out.println("Der gesuchte Wert wurde gefunden! Du hast "+i+" Versuche gebraucht.");
int dialogResult = JOptionPane.showConfirmDialog(null, "Wollen Sie eine neue Runde starten?", "Frage", JOptionPane.YES_NO_OPTION);
if (dialogResult == 0) {
}else {
//w = false;
System.exit(0);
}
//s = false;
}
// }
// }
});
b.setBounds(10,100,100,30);
JPanel p = new JPanel();
p.setLayout(null);
p.add(b);
p.add(e);
p.add(t);
p.add(txt);
f.add(p);
f.setVisible(true);
}
}
提前致谢!
【问题讨论】:
标签: java loops swing random jframe