Java龚永罡---答案(7)

2019-01-03 18:01

String day[]=calendar.getCalendar(); for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]); }

nextMonth=new Button(\下月\ previousMonth=new Button(\上月\ nextMonth.addActionListener(this); previousMonth.addActionListener(this); Panel pNorth=new Panel(), pSouth=new Panel(); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage);

showMessage.setText(\日历:\年\月\

ScrollPane scrollPane=new ScrollPane(); scrollPane.add(pCenter);

【代码4】// 窗口添加scrollPane在中心区域 【代码5】// 窗口添加pNorth 在北面区域 【代码6】// 窗口添加pSouth 在南区域。 }

public void actionPerformed(ActionEvent e) { if(e.getSource()==nextMonth) { month=month+1; if(month>12) month=1;

calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); } }

else if(e.getSource()==previousMonth) { month=month-1; if(month<1) month=12;

calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]); } }

showMessage.setText(\日历:\年\月\

31

} }

CalendarMainClass.java

public class CalendarMainClass { public static void main(String args[])

{ CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true); frame.validate();

frame.addWindowListener(new java.awt.event.WindowAdapter() { windowClosing(java.awt.event.WindowEvent e)

{ System.exit(0); } } ); } }

public

void

? 实验后的练习:

1. 请在CalendarFrame类中增加一个TextField文本框,用户可以通过在文本框中输入年份来修改calendar对象的int成员year。

【结果】

将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。 【注意事项】

①实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。

②报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。 【思考题】

32

实验六 多线程

【目的】

①掌握使用Thread的子类创建线程; ②学习使用Thread类创建线程; ③学习处理线程同步问题。 【内容】

1.汉字打字练习。

? 实验要求:

编写一个Java应用程序,在主线程中再创建一个Frame类型的窗口,在该窗口中再创建1个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。

? 程序运行效果示例:

程序运行效果如下图所示:

? 程序模板:

WordThread.java

import java.awt.*;

public class WordThread extends Thread { char word; int k=19968; Label com;

WordThread(Label com) { this.com=com; }

public void run() { k=19968; while(true) {

word=(char)k; com.setText(\

try{ 【代码1】//调用sleep方法使得线程中断6000豪秒 }

catch(InterruptedException e){} k++;

if(k>=29968) k=19968; } } }

ThreadFrame.java

import java.awt.*; import java.awt.event.*;

public class ThreadFrame extends Frame implements ActionListener

33

{

Label wordLabel; Button button;

TextField inputText,scoreText;

【代码2】//用WordThread声明一个giveWord对象 int score=0; ThreadFrame()

{ wordLabel=new Label(\ wordLabel.setFont(new Font(\ button=new Button(\开始\ inputText=new TextField(3); scoreText=new TextField(5); scoreText.setEditable(false);

【代码3】//创建giveWord,将wordLabel传递给WordThread构造方法的参数 button.addActionListener(this); inputText.addActionListener(this); add(button,BorderLayout.NORTH); add(wordLabel,BorderLayout.CENTER); Panel southP=new Panel();

southP.add(new Label(\输入标签所显示的汉字后回车:\ southP.add(inputText); southP.add(scoreText);

add(southP,BorderLayout.SOUTH); setBounds(100,100,350,180); setVisible(true); validate();

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e) { System.exit(0); } } ); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==button)

{ if(!(【代码4】)) //giveWord调用方法isAlive() { giveWord=new WordThread(wordLabel); } try

{ 【代码5】//giveWord调用方法start() }

catch(Exception exe){} }

34

else if(e.getSource()==inputText)

{ if(inputText.getText().equals(wordLabel.getText())) { score++; }

scoreText.setText(\得分:\ inputText.setText(null); } } }

WordThread.java

public class ThreadWordMainClass

{ public static void main(String args[]) { new ThreadFrame(); }

? 实验后的练习:

1. 在WordThread类中增加int型的成员time,其初值为6000,将其中的【代码1】更改为线程中断time毫秒。在WordThread类增加public void setTime(int n)方法,使得WordThread线程对象可以调用该方法修改time的值。

2.旋转的行星。

? 实验要求:

编写一个应用程序,模拟月亮围绕地球旋转、地球围绕太阳旋转。

? 程序运行效果示例:

程序运行效果如下图所示:

? 程序模板:

Mycanvas.java

import java.awt.*;

public class Mycanvas extends Canvas { int r; Color c;

public void setColor(Color c) { this.c=c; }

public void setR(int r) { this.r=r; }

public void paint(Graphics g) { g.setColor(c);

g.fillOval(0,0,2*r,2*r); }

public int getR() { return r;

35


Java龚永罡---答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:财经应用文写作第二版课后习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: