JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲
本文實(shí)例為大家分享了JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲的具體代碼,供大家參考,具體內(nèi)容如下
案例描述:java-gui實(shí)現(xiàn)單詞游戲,隨機(jī)顯示單詞,鍵盤在文本框中輸入想對(duì)應(yīng)的單詞,回答正確加5分,錯(cuò)誤扣三分**
案例圖片
回答正確

回答錯(cuò)誤

重置答題

案例分析
1.定義三個(gè)面板存放各個(gè)組件JPanel
2.定義拆分窗格布局
3.創(chuàng)造三個(gè)文本域用來顯示和輸入
4.定義滾動(dòng)窗格設(shè)置自動(dòng)換行
5.定義"確定"重置”“退出”按鈕
6.給三個(gè)按鈕添加事件處理
7.定義單詞顯示區(qū)域
8.定義幾個(gè)數(shù)據(jù)存放分?jǐn)?shù)答題數(shù)
9.設(shè)置字體大小和顏色
10.設(shè)置布局管理器
廢話不說直接上代碼(注釋已經(jīng)寫好了)
import java.awt.*; //導(dǎo)包
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;
//定義滾動(dòng)窗格
JScrollPane jspane1;
JScrollPane jspane2;
JScrollPane jspane3;
//定義按鈕
JButton jb2;
JButton jb3;
JButton jb1;
//定義顯示區(qū)域
JLabel jla1;
//定義隨機(jī)函數(shù)
Random ran;
private int sw; //屏幕寬度和高度
private int sh; //屏幕寬度和高度
private String ch;//隨機(jī)單詞
private int Fen;//記錄分?jǐn)?shù)
private int z;//記錄正確題數(shù)
private int x;//記錄錯(cuò)誤題數(shù)
private int sun;//記錄總題數(shù)
public static void main(String[] args) {
Swing_exercise2 a = new Swing_exercise2(); //顯示界面
}
public Swing_exercise2() //構(gòu)造函數(shù)
{
//字體初始化 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);
//創(chuàng)建隨機(jī)函數(shù)
ran = new Random();
//創(chuàng)建面板
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//創(chuàng)建多行文本框
jta1 = new JTextArea();
jta3 = new JTextArea();
//創(chuàng)建單行文本框
jta2 = new TextField(10);
//設(shè)置多行文本框自動(dòng)換行
jta1.setLineWrap(true);
jta3.setLineWrap(true);
//創(chuàng)建滾動(dòng)窗格
jspane1 = new JScrollPane(jta1);
jspane2 = new JScrollPane(jta2);
jspane3 = new JScrollPane(jta3);
//設(shè)置字體樣式
jta3.setFont(font1);
jta2.setFont(font2);
jta1.setFont(font);
//創(chuàng)建拆分窗格
jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jspane1, jspane2);
jsp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jspane3, jsp);
//分頻器布局
jsp.setDividerLocation(700); //設(shè)置拆分窗格分頻器初始位置
jsp.setDividerSize(10); //設(shè)置分頻器大小
jsp1.setDividerLocation(0.5); //設(shè)置拆分窗格分頻器初始位置
jsp1.setDividerSize(10); //設(shè)置分頻器大小
//設(shè)置調(diào)整單詞顯示區(qū)
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));
//設(shè)置顏色
jla1.setForeground(Color.green);
jla1.setBackground(Color.decode("#000cc"));
//創(chuàng)建按鈕
jb2 = new JButton("確定");
jb3 = new JButton("退出");
jb1 = new JButton("重置");
//設(shè)置布局管理
jp1.setLayout(new BorderLayout()); //設(shè)置面板布局
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);
//初始化得分?jǐn)?shù)據(jù)
Fen=0;
z=0;
x=0;
sun=0;
//布置整體面板布局
this.add(jp1, BorderLayout.CENTER);
this.add(jp2, BorderLayout.SOUTH);
this.add(jp3, BorderLayout.WEST);
//設(shè)置窗體屬性
this.setTitle("單詞游戲"); //設(shè)置界面標(biāo)題
this.setExtendedState(MAXIMIZED_BOTH); //窗口最大化
this.setLocation(1000, 200); //設(shè)置界面初始位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設(shè)置虛擬機(jī)和界面一同關(guān)閉
this.setVisible(true); //設(shè)置界面可視化
//空格加鼠標(biāo)確定事件監(jiān)聽
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+" "+"錯(cuò)誤:"
+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("回答錯(cuò)誤 " +
" 得分-2 "+" 作答情況 "+""+"正確:"+z+" "+"錯(cuò)誤:"
+x+" 總答題:"+sun+" 總得分為 "+Fen+" " +
" 再接再厲");
}
}
});
//退出按鈕事件監(jiān)聽
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//重置按鈕事件監(jiān)聽
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jta3.setForeground(Color.GRAY);
jta1.setFont(font4);
jta1.setText("不驕不躁,繼續(xù)努力");
jta1.setForeground(Color.CYAN);
jta2.setText("");
z=0;
sun=0;
x=0;
Fen=0;
jta3.setText("重新答題 " +
" "+"作答情況"+""+"正確:0"+" "+"錯(cuò)誤:0"
+" 總答題:0"+" 總得分為 0 "+" " +
" 不忘初心 繼續(xù)前行");
}
});
//備選空格事件處理
/*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+" "+"錯(cuò)誤:"
+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("回答錯(cuò)誤 " +
" 得分-2 "+" 作答情況"+""+"正確:"+z+" "+"錯(cuò)誤:"
+x+" 總答題:"+sun+" 總得分為 "+Fen+" " +
" 再接再厲");
}
}
}
});*/
}
//隨機(jī)產(chǎn)生單詞
private String RandomWords() {//產(chǎn)生隨機(jī)單詞
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);//定義隨機(jī)數(shù)區(qū)間[0,20]
return s[b];
}
//獲取用戶屏幕大小
private void SimpleFrame() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
sw = dim.width;
sh = dim.height;
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java GUI實(shí)現(xiàn)加法計(jì)算器
- Java實(shí)現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼
- Java圖形界面GUI布局方式(小結(jié))
- java GUI實(shí)現(xiàn)ATM機(jī)系統(tǒng)(3.0版)
- Java使用GUI繪制線條的示例
- 五種JAVA GUI布局管理的方式
- JAVA基礎(chǔ)-GUI
- IntelliJ IDEA安裝插件阿里巴巴Java開發(fā)手冊(cè)(Alibaba Java Coding Guidelines)
- 用GUI實(shí)現(xiàn)java版貪吃蛇小游戲
- java GUI實(shí)現(xiàn)五子棋游戲
- java GUI編程之paint繪制操作示例
- java GUI編程之監(jiān)聽操作實(shí)例分析
- java GUI編程之布局控制器(Layout)實(shí)例分析
- java GUI界面初步入門示例【AWT包】
- Java的帶GUI界面猜數(shù)字游戲的實(shí)現(xiàn)示例
- JAVA圖形界面(GUI)之表格的示例代碼
- java Gui實(shí)現(xiàn)肯德基點(diǎn)餐收銀系統(tǒng)
- 教你用Java GUI實(shí)現(xiàn)文本文件的讀寫
相關(guān)文章
關(guān)于Java中的實(shí)體類要?implements?Serializable的原因分析
這篇文章主要介紹了Java中的實(shí)體類為什么要?implements?Serializable,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
Spring中Bean對(duì)象的定義、注冊(cè)和獲取流程分析
這篇文章主要介紹了Spring中Bean對(duì)象的定義、注冊(cè)和獲取流程分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
Python基礎(chǔ)之如何使用multiprocessing模塊
今天帶大家學(xué)習(xí)python多進(jìn)程的相關(guān)知識(shí),文中對(duì)multiprocessing模塊的使用作了非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06
基于springboot redirect重定向路徑問題總結(jié)
這篇文章主要介紹了springboot redirect重定向路徑問題總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
詳解Java中PriorityQueue的作用和源碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Java中阻塞隊(duì)列PriorityQueue的作用和源碼實(shí)現(xiàn)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下2024-02-02
Spring Boot 之HelloWorld開發(fā)案例
這篇文章主要介紹了Spring Boot 之HelloWorld開發(fā)案例,需要的朋友可以參考下2017-04-04
Java如何通過"枚舉的枚舉"表示二級(jí)分類的業(yè)務(wù)場(chǎng)景
這篇文章主要介紹了Java如何通過"枚舉的枚舉"表示二級(jí)分類的業(yè)務(wù)場(chǎng)景問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

