刚学Java,请教一个问题,谢谢

loveshipting loveshipting 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
import javax.swing.*;   
import java.awt.event.*;

public class LottoEvent implements ItemListener, ActionListener,
Runnable {

LottoMadness gui;
Thread playing;

public LottoEvent(LottoMadness in) {
gui = in;
}

public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (command == "Play") {
startPlaying();
}
if (command == "Stop") {
stopPlaying();
}
if (command == "Reset") {
clearAllFields();
}
}

void startPlaying() {
playing = new Thread(this);
playing.start();
gui.play.setEnabled(false);
gui.stop.setEnabled(true);
gui.reset.setEnabled(false);
gui.quickpick.setEnabled(false);
gui.personal.setEnabled(false);
}

void stopPlaying() {
gui.stop.setEnabled(false);
gui.play.setEnabled(true);
gui.reset.setEnabled(true);
gui.quickpick.setEnabled(true);
gui.personal.setEnabled(true);
playing = null;
}

void clearAllFields() {
for (int i = 0; i < 6; i++) {
gui.numbers[i].setText(null);
gui.winners[i].setText(null);
}
gui.got3.setText("0");
gui.got4.setText("0");
gui.got5.setText("0");
gui.got6.setText("0");
gui.drawings.setText("0");
gui.years.setText(null);
}

public void itemStateChanged(ItemEvent event) {
Object item = event.getItem();
if (item == gui.quickpick) {
for (int i = 0; i < 6; i++) {
int pick;
do {
pick = (int) Math.floor(Math.random() * 50 + 1);
} while (numberGone(pick, gui.numbers, i));
gui.numbers[i].setText("" + pick);
}
} else {
for (int i = 0; i < 6; i++) {
gui.numbers[i].setText(null);
}
}
}

void addOneToField(JTextField field) {
int num = Integer.parseInt("0" + field.getText());
num++;
field.setText("" + num);
}

boolean numberGone(int num, JTextField[] pastNums, int count) {
for (int i = 0; i < count; i++) {
if (Integer.parseInt(pastNums[i].getText()) == num) {
return true;
}
}
return false;
}

boolean matchedOne(JTextField win, JTextField[] allPicks) {
for (int i = 0; i < 6; i++) {
String winText = win.getText();
if ( winText.equals( allPicks[i].getText() ) ) {
return true;
}
}
return false;
}

public void run() {
Thread thisThread = Thread.currentThread();
while (playing == thisThread) {
addOneToField(gui.drawings);
int draw = Integer.parseInt(gui.drawings.getText());
float numYears = (float)draw / 104;
gui.years.setText("" + numYears);

int matches = 0;
for (int i = 0; i < 6; i++) {
int ball;
do {
ball = (int)Math.floor(Math.random() * 50 + 1);
} while (numberGone(ball, gui.winners, i));
gui.winners[i].setText("" + ball);
if (matchedOne(gui.winners[i], gui.numbers)) {
matches++;
}
}
switch (matches) {
case 3:
addOneToField(gui.got3);
break;
case 4:
addOneToField(gui.got4);
break;
case 5:
addOneToField(gui.got5);
break;
case 6:
addOneToField(gui.got6);
gui.stop.setEnabled(false);
gui.play.setEnabled(true);
playing = null;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// do nothing
}
}
}
}

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

public class LottoMadness extends JFrame {
LottoEvent lotto = new LottoEvent(this);

// set up row 1
JPanel row1 = new JPanel();
ButtonGroup option = new ButtonGroup();
JCheckBox quickpick = new JCheckBox("Quick Pick", false);
JCheckBox personal = new JCheckBox("Personal", true);
// set up row 2
JPanel row2 = new JPanel();
JLabel numbersLabel = new JLabel("Your picks: ", JLabel.RIGHT);
JTextField[] numbers = new JTextField[6];
JLabel winnersLabel = new JLabel("Winners: ", JLabel.RIGHT);
JTextField[] winners = new JTextField[6];
// set up row 3
JPanel row3 = new JPanel();
JButton stop = new JButton("Stop");
JButton play = new JButton("Play");
JButton reset = new JButton("Reset");
// set up row 4
JPanel row4 = new JPanel();
JLabel got3Label = new JLabel("3 of 6: ", JLabel.RIGHT);
JTextField got3 = new JTextField("0");
JLabel got4Label = new JLabel("4 of 6: ", JLabel.RIGHT);
JTextField got4 = new JTextField("0");
JLabel got5Label = new JLabel("5 of 6: ", JLabel.RIGHT);
JTextField got5 = new JTextField("0");
JLabel got6Label = new JLabel("6 of 6: ", JLabel.RIGHT);
JTextField got6 = new JTextField("0", 10);
JLabel drawingsLabel = new JLabel("Drawings: ", JLabel.RIGHT);
JTextField drawings = new JTextField("0");
JLabel yearsLabel = new JLabel("Years: ", JLabel.RIGHT);
JTextField years = new JTextField();

public LottoMadness() {
super("Lotto Madness");
setSize(550, 270);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(5, 1, 10, 10);
setLayout(layout);

// Add listeners
quickpick.addItemListener(lotto);
personal.addItemListener(lotto);
stop.addActionListener(lotto);
play.addActionListener(lotto);
reset.addActionListener(lotto);

FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER,
10, 10);
option.add(quickpick);
option.add(personal);
row1.setLayout(layout1);
row1.add(quickpick);
row1.add(personal);
add(row1);

GridLayout layout2 = new GridLayout(2, 7, 10, 10);
row2.setLayout(layout2);
row2.add(numbersLabel);
for (int i = 0; i < 6; i++) {
numbers[i] = new JTextField();
row2.add(numbers[i]);
}
row2.add(winnersLabel);
for (int i = 0; i < 6; i++) {
winners[i] = new JTextField();
winners[i].setEditable(false);
row2.add(winners[i]);
}
add(row2);

FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER,
10, 10);
row3.setLayout(layout3);
stop.setEnabled(false);
row3.add(stop);
row3.add(play);
row3.add(reset);
add(row3);

GridLayout layout4 = new GridLayout(2, 3, 20, 10);
row4.setLayout(layout4);
row4.add(got3Label);
got3.setEditable(false);
row4.add(got3);
row4.add(got4Label);
got4.setEditable(false);
row4.add(got4);
row4.add(got5Label);
got5.setEditable(false);
row4.add(got5);
row4.add(got6Label);
got6.setEditable(false);
row4.add(got6);
row4.add(drawingsLabel);
drawings.setEditable(false);
row4.add(drawings);
row4.add(yearsLabel);
years.setEditable(false);
row4.add(years);
add(row4);

setVisible(true);
}

public static void main(String[] arguments) {
LottoMadness frame = new LottoMadness();
}
}

请问第一个程序中:第8行的 Thread playing什么意思?
第10行的(LottoMadness in)这个用法怎么的?
第28行,还是Thread。。
有没有大虾给一个注册解释什么的啊。。。书上的程序没解释,好郁闷纳。
谢谢大家。
...全文

相关推荐

杨辉三角(java)

刚学java,第一节课的作业。杨辉三角是一个经典问题了,无论学c,c++,java····各个语言时都会做的作业。

yingzi_love

十分简单的辅助小工具

刚学完javaSE,因为写代码时,遇到问题总要查百度,为了方便,用所学知识加上国外网站上的一个java全局热键实现的第三方jar包jintlitype,完成了一个小工具,也算是学习java做的第一个东西,分享出来,因为后来改了新版本,利用百度翻译的接口,加了翻译功能,但新版本有bug还没解决,所以先把最早的版本拿出来,也因为改版的原因,没有留下源码,十分抱歉,所以里面还附带一个从华军软件园下载的java反编译工具,功能十分简单,代码也很少,各位大神,不喜勿喷。

譬若北辰

刚学java,就利用For循环实现打印各种形状形

刚学java,就利用For循环实现打印各种形状形,test04 输出金字塔,输出倒,输出右,输出右倒形,等各种形状,也可以通过变换输出自己想要的形状,有需要的伙伴可以自行下载

西虹市王多鱼

Java Web开发流程图--适合刚学Web开发的人员

自己总结的java Web开发流程图。能够理清Java Web开发的整体思路.仅供初学者学习

zhengyun_an

java做的一个简单的名字大战游戏

由于刚学java 很感兴趣 遇到很多问题 。游戏中遇到很多问题,如何 没一秒打一次,如何完成持续投毒。可以应该很好的改改。用的都是c语言的思想。 希望多多批评! 谢谢!

lifutaohaofuqi
评论 3
收藏 已收藏
分享
返回顶部
loveshipting
Java 51,407 成员 86,128 内容