您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Java中利用GUI制作一個(gè)單詞答題游戲,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
案例分析
1.定義三個(gè)面板存放各個(gè)組件JPanel
2.定義拆分窗格布局
3.創(chuàng)造三個(gè)文本域用來(lái)顯示和輸入
4.定義滾動(dòng)窗格設(shè)置自動(dòng)換行
5.定義"確定"重置”“退出”按鈕
6.給三個(gè)按鈕添加事件處理
7.定義單詞顯示區(qū)域
8.定義幾個(gè)數(shù)據(jù)存放分?jǐn)?shù)答題數(shù)
9.設(shè)置字體大小和顏色
10.設(shè)置布局管理器
實(shí)現(xiàn)代碼如下:
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); //初始化顯示頁(yè)面 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)聽(tīng) 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)聽(tīng) jb3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //重置按鈕事件監(jiān)聽(tīng) 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; } }
上述就是小編為大家分享的怎么在Java中利用GUI制作一個(gè)單詞答題游戲了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。