1. 程式人生 > 其它 >【Java】GUI執行緒

【Java】GUI執行緒

技術標籤:# Java題解

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
MyFrame:

package Gui;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyFrame extends JFrame implements Runnable,ActionListener {
    JTextField inputLetter;
    JLabel showLetter,showScore;
    Thread giveLetter;
    int sleepTime,score;


    public
MyFrame() { init(); setTitle("打字母遊戲"); setBounds(300, 300, 400, 100); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); validate(); giveLetter = new Thread(this); giveLetter.start(); } void init() { setLayout
(new FlowLayout()); showLetter = new JLabel(" ",JLabel.CENTER); showScore = new JLabel("分數:"); showLetter.setFont(new Font("Arial",Font.BOLD,22)); inputLetter = new JTextField(6); add(new JLabel("顯示字母:")); add(showLetter)
; add(new JLabel("輸入所顯示的字母(回車)")); add(inputLetter); add(showScore); inputLetter.addActionListener(this); } public void setSleepTime(int sleepTime) { this.sleepTime = sleepTime; } @Override public void actionPerformed(ActionEvent e) { String s = showLetter.getText().trim(); String letter = inputLetter.getText().trim(); if(s.equals(letter)){ score++; showScore.setText("得分"+score); giveLetter.interrupt(); } inputLetter.setText(null); } @Override public void run() { char c; while(true){ c = (char)(Math.random()*26 + 'a'); showLetter.setText("" + c +" "); try{ Thread.sleep(sleepTime); }catch (InterruptedException e){ } } } }

main:

package Gui;

public class Main {
    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame();
        myFrame.setSleepTime(1500);
    }
}