JavaGUI实现随机单词答题游戏
啊道~ 人气:0案例描述:java-gui实现单词游戏,随机显示单词,键盘在文本框中输入想对应的单词,回答正确加5分,错误扣三分**
案例图片
回答正确
回答错误
重置答题
案例分析
1.定义三个面板存放各个组件JPanel
2.定义拆分窗格布局
3.创造三个文本域用来显示和输入
4.定义滚动窗格设置自动换行
5.定义"确定"重置”“退出”按钮
6.给三个按钮添加事件处理
7.定义单词显示区域
8.定义几个数据存放分数答题数
9.设置字体大小和颜色
10.设置布局管理器
废话不说直接上代码(注释已经写好了)
import java.awt.*; //导包 import java.awt.event.*; import java.util.Random; import javax.swing.*; public class Swing_exercise2 extends JFrame { //继承JFrame顶层框架 //定义面板 JPanel jp1; JPanel jp2; JPanel jp3; //定义拆分窗格 JSplitPane jsp; JSplitPane jsp1; //定义文本域 JTextArea jta1; TextField jta2; JTextArea jta3; //定义滚动窗格 JScrollPane jspane1; JScrollPane jspane2; JScrollPane jspane3; //定义按钮 JButton jb2; JButton jb3; JButton jb1; //定义显示区域 JLabel jla1; //定义随机函数 Random ran; private int sw; //屏幕宽度和高度 private int sh; //屏幕宽度和高度 private String ch;//随机单词 private int Fen;//记录分数 private int z;//记录正确题数 private int x;//记录错误题数 private int sun;//记录总题数 public static void main(String[] args) { Swing_exercise2 a = new Swing_exercise2(); //显示界面 } public Swing_exercise2() //构造函数 { //字体初始化 Times new roman:罗马字样 加粗 Font font = new Font("Times new roman", Font.BOLD, 50); Font font2 = new Font("Times new roman", Font.BOLD, 30); Font font1 = new Font("宋体", Font.BOLD, 20); Font font4 = new Font("宋体", Font.BOLD, 70); //创建随机函数 ran = new Random(); //创建面板 jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new JPanel(); //创建多行文本框 jta1 = new JTextArea(); jta3 = new JTextArea(); //创建单行文本框 jta2 = new TextField(10); //设置多行文本框自动换行 jta1.setLineWrap(true); jta3.setLineWrap(true); //创建滚动窗格 jspane1 = new JScrollPane(jta1); jspane2 = new JScrollPane(jta2); jspane3 = new JScrollPane(jta3); //设置字体样式 jta3.setFont(font1); jta2.setFont(font2); jta1.setFont(font); //创建拆分窗格 jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jspane1, jspane2); jsp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jspane3, jsp); //分频器布局 jsp.setDividerLocation(700); //设置拆分窗格分频器初始位置 jsp.setDividerSize(10); //设置分频器大小 jsp1.setDividerLocation(0.5); //设置拆分窗格分频器初始位置 jsp1.setDividerSize(10); //设置分频器大小 //设置调整单词显示区 jla1 = new JLabel(); jla1.setFont(font); //初始化显示页面 ch = RandomWords(); jla1.setText(ch); jla1.setSize(sw, sh); jla1.setSize(500, 500); jla1.setLocation(ran.nextInt(300), ran.nextInt(200)); //设置颜色 jla1.setForeground(Color.green); jla1.setBackground(Color.decode("#000cc")); //创建按钮 jb2 = new JButton("确定"); jb3 = new JButton("退出"); jb1 = new JButton("重置"); //设置布局管理 jp1.setLayout(new BorderLayout()); //设置面板布局 jp2.setLayout(new FlowLayout(FlowLayout.CENTER)); jp3.setLayout(new BorderLayout()); //添加组件 jp1.add(jsp); jp2.add(jb2); jp2.add(jb1); jp2.add(jb3); jp3.add(jsp1); jta1.add(jla1); //初始化得分数据 Fen=0; z=0; x=0; sun=0; //布置整体面板布局 this.add(jp1, BorderLayout.CENTER); this.add(jp2, BorderLayout.SOUTH); this.add(jp3, BorderLayout.WEST); //设置窗体属性 this.setTitle("单词游戏"); //设置界面标题 this.setExtendedState(MAXIMIZED_BOTH); //窗口最大化 this.setLocation(1000, 200); //设置界面初始位置 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置虚拟机和界面一同关闭 this.setVisible(true); //设置界面可视化 //空格加鼠标确定事件监听 jb2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jta2.getText().equals(ch)) { jta1.setText(""); jta2.setText(""); z=z+1; Fen=Fen+5; sun=x+z; jta3.setForeground(Color.blue); jta3.setText("回答正确 " + " 得分+5 "+" 作答情况 "+""+"正确:"+z+" "+"错误:" +x+" 总答题:"+sun+" 总得分为 "+Fen+" " + " 不要骄傲"); ch = RandomWords(); jla1.setText(ch); jla1.setLocation(ran.nextInt(700), ran.nextInt(300)); }else { jta3.setForeground(Color.red); jta1.setText(""); jta2.setText(""); Fen=Fen-2; if(Fen<0){ Fen=0; } x+=1; sun=x+z; jta3.setText("回答错误 " + " 得分-2 "+" 作答情况 "+""+"正确:"+z+" "+"错误:" +x+" 总答题:"+sun+" 总得分为 "+Fen+" " + " 再接再厉"); } } }); //退出按钮事件监听 jb3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //重置按钮事件监听 jb1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jta3.setForeground(Color.GRAY); jta1.setFont(font4); jta1.setText("不骄不躁,继续努力"); jta1.setForeground(Color.CYAN); jta2.setText(""); z=0; sun=0; x=0; Fen=0; jta3.setText("重新答题 " + " "+"作答情况"+""+"正确:0"+" "+"错误:0" +" 总答题:0"+" 总得分为 0 "+" " + " 不忘初心 继续前行"); } }); //备选空格事件处理 /*jb2.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { if(e.getKeyCode()==KeyEvent.getExtendedKeyCodeForChar(KeyEvent.VK_SPACE)){ if (jta2.getText().equals(ch)) { z=z+1; Fen=Fen+5; sun=x+z; jta3.setText("回答正确 " + " 得分+5 "+" 作答情况"+""+"正确:"+z+" "+"错误:" +x+" 总答题:"+sun+" 总得分为 "+Fen+" " + " 不要骄傲"); ch = RandomWords(); jla1.setText(ch); jla1.setLocation(ran.nextInt(300), ran.nextInt(500)); }else { Fen=Fen-2; x+=1; sun=x+z; jta3.setText("回答错误 " + " 得分-2 "+" 作答情况"+""+"正确:"+z+" "+"错误:" +x+" 总答题:"+sun+" 总得分为 "+Fen+" " + " 再接再厉"); } } } });*/ } //随机产生单词 private String RandomWords() {//产生随机单词 String[] s = {"good", "cheer", "strive", "optimistic", "hello", "word", "tercher", "student", "book", "genius", "handsome", "beautiful", "health", "happy", "exercice", "computer", "english", "jspanese", "eat", "me"}; int b = ran.nextInt(21);//定义随机数区间[0,20] return s[b]; } //获取用户屏幕大小 private void SimpleFrame() { Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); sw = dim.width; sh = dim.height; } }
加载全部内容