湖北汽车工业学院JAVA程序设计 实验三 Java的GUI编程 实验指(2)

2019-06-17 19:58

学习使用布局类。

【实验任务】

编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenterd的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮可以显示当前月的上一月的日历。窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout,pSouth中放置一个标签用来显示一些信息。

【实验内容】

阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。 //CalendarBean.java

import java.util.Calendar; public class CalendarBean {

String day[];

int year=2005,month=0; public void setYear(int year) { this.year=year; }

public int getYear() { return year; }

public void setMonth(int month) { this.month=month; }

public int getMonth() { return month; }

public String[] getCalendar()

{ String a[]=new String[42];

Calendar 日历=Calendar.getInstance(); 日历.set(year,month-1,1);

int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1; int day=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { day=31; }

if(month==4||month==6||month==9||month==11) { day=30; }

if(month==2)

{ if(((year%4==0)&&(year0!=0))||(year@0==0)) { day=29; } else

{ day=28; } }

for(int i=星期几,n=1;i<星期几+day;i++) {

a[i]=String.valueOf(n) ; n++; } return a; } }

//CalendarFrame.java

import java.util.*; import java.awt.*;

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

public class CalendarFrame extends Frame implements ActionListener { Label labelDay[]=new Label[42]; Button titleName[]=new Button[7];

String name[]={\日\一\二\三\四\五\六\ Button nextMonth,previousMonth; int year=2006,month=10; CalendarBean calendar;

Label showMessage=new Label(\ public CalendarFrame()

{ Panel pCenter=new Panel();

【代码1】 //将pCenter的布局设置为7行7列的GridLayout 布局。 for(int i=0;i<7;i++)

{ titleName[i]=new Button(name[i]);

【代码2】//pCenter添加组件titleName[i]。 }

for(int i=0;i<42;i++) {

labelDay[i]=new Label(\ 【代码3】//pCenter添加组件labelDay[i]。 }

calendar=new CalendarBean(); calendar.setYear(year); calendar.setMonth(month);

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(\日历:\年\calendar.getMonth()+\月\

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(\日历:\年\月\ }

}

//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() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } } ); } }

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

(三) 绘制彩色饼图

【实验目的】

(1) 熟悉图形绘制方法;

(2) 了解Java2D图形绘制的基本概念和方法; (3) 使用Java2D进行文字图形填充。

【实验任务】

某公司针对要推出的新产品向消费者进行满意度调查,调查分为4个等级:A满意、B一般、C不满意、D不感兴趣。经统计参与调查的500名消费者试用结果为选择A的有60%、选择B的有20%、选择C的有10%、选择D的有10%。绘制一个彩色饼图描述上述百分比数值。 【实验内容】

阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。 // Piechart.java

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

public class Piechart extends JFrame {

}

public Piechart() { }

public static void main(String[] args) {

JFrame frame = new Piechart();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }

getContentPane().add( 代码1 ); setTitle(\绘制饼图\); setSize(400,400); setVisible(true);

class PaintPiechart extends JPanel{

public void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2 = 代码2 ;

int width = getWidth();

int height = getHeight()-50; int x = width/2;

int y = height/2;

int radius = (int)(Math.min(width, height)/3);

Arc2D r1 = new Arc2D.Double(x-radius,y-radius, g2.setColor(Color.magenta); g2.fill(r1);

Arc2D r2 = 代码3 ; g2.setColor(Color.LIGHT_GRAY); g2.fill(r2);

Arc2D r3 = 代码4 ; g2.setColor(Color.blue); g2.fill(r3);

Arc2D r4 = 代码5 ; g2.setColor(Color.orange); g2.fill(r4);

g2.setColor(Color.black);

g2.drawString(\满意:60%\,x,y - radius );

2 * radius,2 * radius,0,6*36,Arc2D.PIE);

g2.drawString(\一般:20%\,x-radius,y + radius); g2.drawString(\不满意:10%\,x+radius/2,y + radius); g2.drawString(\不感兴趣:10%\,x+radius/2,y + radius/3);

} }

思考:如果需要将上述统计结果绘制为柱状图,应如何实现?


湖北汽车工业学院JAVA程序设计 实验三 Java的GUI编程 实验指(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中华民风民俗单元整理课

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

马上注册会员

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