设计一个Java事件处理,有一个窗口,点击按钮生成1-100的随机数,弹出一个新的窗口输入猜的数字,如果猜的数字大于随机数显示“猜大了”,小于显示“猜小了”然后继续输入,直到猜中了现实“猜中了”并且显示猜的次数。要求视图,窗口,监视不在一个类里
时间: 2024-02-27 20:55:40 浏览: 63
好的,我来为您设计一个Java事件处理程序,实现您的需求。
首先,我们需要创建两个类:一个用于生成随机数和显示窗口,另一个用于显示猜数字的窗口和处理猜测事件。
1. 生成随机数和显示窗口的类:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RandomNumberGenerator {
private JFrame frame;
private JLabel label;
private JButton button;
public RandomNumberGenerator() {
frame = new JFrame("随机数生成器");
label = new JLabel();
button = new JButton("生成随机数");
frame.setLayout(new BorderLayout());
frame.add(label, BorderLayout.CENTER);
frame.add(button, BorderLayout.SOUTH);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int randomNumber = (int)(Math.random() * 100) + 1;
GuessNumberWindow guessNumberWindow = new GuessNumberWindow(randomNumber);
guessNumberWindow.showWindow();
frame.dispose();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new RandomNumberGenerator();
}
}
```
这个类中,我们创建了一个窗口,包含一个显示随机数的标签和一个生成随机数的按钮。当用户点击按钮时,我们生成一个1-100的随机数,创建一个猜数字的窗口,并将随机数传递给该窗口。
2. 显示猜数字的窗口和处理猜测事件的类:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GuessNumberWindow {
private JFrame frame;
private JLabel label;
private JTextField textField;
private JButton button;
private int randomNumber;
private int guessCount;
public GuessNumberWindow(int randomNumber) {
this.randomNumber = randomNumber;
guessCount = 0;
frame = new JFrame("猜数字");
label = new JLabel("请输入1-100之间的数字:");
textField = new JTextField(10);
button = new JButton("猜");
frame.setLayout(new GridLayout(3, 1));
frame.add(label);
frame.add(textField);
frame.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
guessCount++;
int guessNumber = Integer.parseInt(textField.getText());
if (guessNumber > randomNumber) {
JOptionPane.showMessageDialog(frame, "猜大了!");
} else if (guessNumber < randomNumber) {
JOptionPane.showMessageDialog(frame, "猜小了!");
} else {
JOptionPane.showMessageDialog(frame, "猜中了!你猜了" + guessCount + "次。");
frame.dispose();
}
textField.setText("");
}
});
frame.pack();
}
public void showWindow() {
frame.setVisible(true);
}
}
```
这个类中,我们创建了一个窗口,包含一个提示标签、一个文本框和一个猜数字的按钮。当用户点击猜数字按钮时,我们获取用户输入的数字并与随机数进行比较。如果猜的数字大于随机数,我们显示“猜大了”的提示;如果猜的数字小于随机数,我们显示“猜小了”的提示;如果猜中了,我们显示“猜中了”并显示猜的次数。
最后,您可以在一个新的类中调用RandomNumberGenerator的构造函数来启动程序:
```java
public class Main {
public static void main(String[] args) {
new RandomNumberGenerator();
}
}
```
这样,我们就实现了一个Java事件处理程序,实现了生成随机数、猜数字、显示结果的功能,且视图、窗口、监视不在一个类里。
阅读全文