用java程序的Jframe实现简单的背英文单词并显示它的中文,点击下一个单词则出现下一个单词
时间: 2024-05-04 08:21:30 浏览: 8
以下是一个简单的实现示例:
```java
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class WordLearningApp extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JLabel wordLabel;
private JButton nextButton;
private Map<String, String> wordMap;
private List<String> wordList;
private int currentIndex;
public WordLearningApp() {
setTitle("Word Learning App");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 初始化单词数据
wordMap = new HashMap<>();
wordMap.put("apple", "苹果");
wordMap.put("book", "书");
wordMap.put("cat", "猫");
wordMap.put("dog", "狗");
wordMap.put("elephant", "大象");
wordMap.put("fish", "鱼");
wordMap.put("grape", "葡萄");
wordMap.put("house", "房子");
wordMap.put("ice cream", "冰淇淋");
wordMap.put("juice", "果汁");
wordMap.put("key", "钥匙");
wordMap.put("lemon", "柠檬");
wordMap.put("monkey", "猴子");
wordMap.put("notebook", "笔记本");
wordMap.put("orange", "橙子");
wordMap.put("pizza", "比萨饼");
wordMap.put("queen", "女王");
wordMap.put("robot", "机器人");
wordMap.put("sun", "太阳");
wordMap.put("tree", "树");
wordMap.put("umbrella", "雨伞");
wordMap.put("violin", "小提琴");
wordMap.put("watermelon", "西瓜");
wordMap.put("xylophone", "木琴");
wordMap.put("yellow", "黄色");
wordMap.put("zebra", "斑马");
// 初始化单词列表
wordList = new ArrayList<>(wordMap.keySet());
Collections.shuffle(wordList);
// 初始化界面
JPanel panel = new JPanel();
wordLabel = new JLabel();
wordLabel.setFont(new Font("Arial", Font.PLAIN, 24));
panel.add(wordLabel);
nextButton = new JButton("下一个");
nextButton.addActionListener(this);
panel.add(nextButton);
add(panel, BorderLayout.CENTER);
// 显示第一个单词
currentIndex = 0;
showWord();
}
private void showWord() {
String word = wordList.get(currentIndex);
String translation = wordMap.get(word);
wordLabel.setText(word + " = " + translation);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == nextButton) {
// 显示下一个单词
currentIndex++;
if (currentIndex >= wordList.size()) {
// 如果已经到最后一个单词,则重新洗牌
currentIndex = 0;
Collections.shuffle(wordList);
}
showWord();
}
}
public static void main(String[] args) {
WordLearningApp app = new WordLearningApp();
app.setVisible(true);
}
}
```
该程序使用了一个 `Map` 存储英文单词和中文翻译的对应关系,并使用一个 `List` 存储所有的英文单词,以便后续随机选择单词进行学习。界面上有一个 `JLabel` 显示当前的单词和翻译,以及一个 `JButton` 用于切换到下一个单词。每次点击按钮时,程序会切换到下一个单词,并在界面上显示它的英文和中文翻译。
该程序还实现了一个重新洗牌的功能,当学习完所有单词后,程序会重新洗牌并从第一个单词开始学习。