JOptionPane怎么输入按键后的事件
时间: 2024-04-30 10:23:43 浏览: 9
JOptionPane是Java Swing库中的一个类,用于创建对话框以及提示用户输入数据。在JOptionPane中,可以使用showInputDialog()方法来创建一个提示用户输入数据的对话框。在用户输入数据后,可以通过判断返回值来执行相应的操作。例如:
```java
String input = JOptionPane.showInputDialog("请输入你的名字:");
if(input != null) {
JOptionPane.showMessageDialog(null, "你好," + input + "!");
} else {
JOptionPane.showMessageDialog(null, "你没有输入任何内容!");
}
```
在上面的代码中,我们使用showInputDialog()方法创建一个提示用户输入名字的对话框。如果用户输入了名字并点击了“确定”按钮,那么返回值就是用户输入的名字;如果用户点击了“取消”按钮或者直接关闭了对话框,那么返回值就是null。因此,我们可以通过判断返回值是否为null来确定用户是否输入了数据,然后执行相应的操作。在这个例子中,如果用户输入了名字,就会显示一个欢迎信息,否则就会显示一个提示信息。
除了showInputDialog()方法之外,JOptionPane还提供了一些其他的方法,例如showMessageDialog()方法用于显示一条消息,showConfirmDialog()方法用于显示一个确认对话框等等。在使用这些方法时,也可以通过判断返回值来执行相应的操作。
相关问题
编写Java程序单击按键以后龟兔开始赛跑
好的,这是一个有趣的问题。你可以使用 Java 的 GUI 库来创建一个窗口,然后在窗口中添加一个按钮,当用户单击该按钮时,你可以使用线程来模拟龟兔赛跑的过程。你可以使用 Random 类来生成随机数来模拟龟兔的速度,然后在每个时间间隔内更新它们的位置,直到其中一个到达终点。你可以使用 JOptionPane 类来显示赢家的信息。如果你需要更具体的代码实现,我可以提供一些参考资料。
使用Swing提供的组件创建一个类似金山打字通的程序,显示键盘按键,统计用户每分钟输入的字符数目、正确字符数目、正确率。
以下是一个简单的示例代码,实现了一个类似金山打字通的程序:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class TypingProgram extends JFrame implements ActionListener {
private JLabel lblKey;
private JTextField txtInput;
private JTextArea txtResult;
private int totalCharCount, correctCharCount, incorrectCharCount;
private long startTime;
public TypingProgram() {
super("Typing Program");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(640, 480);
setResizable(false);
JPanel panel = new JPanel(new GridLayout(4, 1));
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
lblKey = new JLabel("Press Any Key to Start Typing");
lblKey.setFont(new Font("Arial", Font.BOLD, 24));
lblKey.setHorizontalAlignment(JLabel.CENTER);
panel.add(lblKey);
txtInput = new JTextField();
txtInput.setFont(new Font("Arial", Font.PLAIN, 18));
txtInput.setHorizontalAlignment(JTextField.CENTER);
txtInput.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (startTime == 0) {
startTime = System.currentTimeMillis();
new Thread(new TimerThread()).start();
}
char key = e.getKeyChar();
lblKey.setText(String.valueOf(key));
if (key == txtResult.getText().charAt(0)) {
correctCharCount++;
txtResult.setText(txtResult.getText().substring(1));
if (txtResult.getText().length() == 0) {
showResult();
}
} else {
incorrectCharCount++;
}
totalCharCount++;
}
});
panel.add(txtInput);
txtResult = new JTextArea();
txtResult.setEditable(false);
txtResult.setFont(new Font("Arial", Font.PLAIN, 18));
txtResult.setLineWrap(true);
txtResult.setWrapStyleWord(true);
txtResult.setText("The quick brown fox jumps over the lazy dog.");
panel.add(txtResult);
getContentPane().add(panel);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Restart")) {
totalCharCount = 0;
correctCharCount = 0;
incorrectCharCount = 0;
startTime = 0;
lblKey.setText("Press Any Key to Start Typing");
txtInput.setText("");
txtResult.setText("The quick brown fox jumps over the lazy dog.");
}
}
private void showResult() {
long totalTime = System.currentTimeMillis() - startTime;
double accuracy = ((double) correctCharCount / totalCharCount) * 100;
double speed = ((double) totalCharCount / totalTime) * 1000 * 60;
String result = String.format("Time: %.2f seconds, Speed: %.2f cpm, Accuracy: %.2f%%",
totalTime / 1000.0, speed, accuracy);
JOptionPane.showMessageDialog(this, result, "Result", JOptionPane.INFORMATION_MESSAGE);
txtInput.setText("");
txtResult.setText("The quick brown fox jumps over the lazy dog.");
lblKey.setText("Press Any Key to Start Typing");
totalCharCount = 0;
correctCharCount = 0;
incorrectCharCount = 0;
startTime = 0;
}
private class TimerThread implements Runnable {
public void run() {
try {
Thread.sleep(5000);
showResult();
} catch (InterruptedException e) {
}
}
}
public static void main(String[] args) {
new TypingProgram();
}
}
```
在这个程序中,我们使用了 Swing 提供的 JLabel、JTextField、JTextArea 和 JOptionPane 组件,分别用于显示键盘按键、接受用户输入、显示文本和显示统计结果。
在键盘输入时,我们使用了 KeyListener 接口来监听用户输入的按键,并根据用户输入的字符来判断输入是否正确。同时,我们还使用了 TimerThread 类来实现一个计时器,计算用户输入的速度和准确率,并在一定时间后弹出结果对话框。
注意,由于本程序只是一个简单的示例,所以在实际使用中可能需要进一步完善。例如,可以增加更多的练习文本、统计更多的数据、支持多种练习模式等等。