广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx

上传人:b****6 文档编号:4281778 上传时间:2022-11-28 格式:DOCX 页数:39 大小:109.17KB
下载 相关 举报
广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx_第1页
第1页 / 共39页
广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx_第2页
第2页 / 共39页
广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx_第3页
第3页 / 共39页
广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx_第4页
第4页 / 共39页
广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx

《广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx》由会员分享,可在线阅读,更多相关《广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx(39页珍藏版)》请在冰豆网上搜索。

广东自考JAVA语言程序设计一课后习题答案和源代码第七章.docx

广东自考JAVA语言程序设计一课后习题答案和源代码第七章

第七章1

7.1编写一个应用程序,绘制一个五角星。

1

7.2用Graphics2D绘制一条抛物线,设抛物线方程的系数从图形界面输入。

3

7.3利用Graphics2D的平移,缩放,旋转功能。

绘制一个六角星。

7

7.4编写画图程序。

10

7.5输入二次曲线的系数,画出二次曲线17

7.6.写音乐播放器,只能播放wav,mid格式的。

24

第七章

7.1编写一个应用程序,绘制一个五角星。

程序运行结果:

源文件:

Work7_1.java

importjava.awt.*;

importjavax.swing.*;

/**

*7.1画一个五角星

*@author黎明你好

*/

publicclassWork7_1

{

publicstaticvoidmain(Stringargs[])

{

JFramewin=newJFrame("第七章,第一题");

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

win.setBounds(50,50,210,250);

win.add(newFiveStarCanvas(100),BorderLayout.CENTER);

win.setVisible(true);

win.validate();

}

}

 

画板类源文件:

FiveStarCanvas.java

/**

*画板类,在上面画出五角星

*@author黎明你好

*/

classFiveStarCanvasextendsCanvas

{

privatestaticfinallongserialVersionUID=1L;

/**五角星外接圆的半径*/

privateintradius;

/**

*构造方法

*@paramr-初始化外接圆半径

*/

publicFiveStarCanvas(intr)

{

this.radius=r;

}

publicvoidpaint(Graphicsg)

{

intax=radius;intay=0;

intbx=(int)(radius*(1-Math.cos((18*Math.PI)/180)));

intcx=(int)(radius*(1+Math.cos((18*Math.PI)/180)));

intdx=(int)(radius*(1-Math.cos((54*Math.PI)/180)));

intex=(int)(radius*(1+Math.cos((54*Math.PI)/180)));

intby=(int)(radius*(1-Math.sin((18*Math.PI)/180)));

intcy=(int)(radius*(1-Math.sin((18*Math.PI)/180)));

intdy=(int)(radius*(1+Math.sin((54*Math.PI)/180)));

intey=(int)(radius*(1+Math.sin((54*Math.PI)/180)));

g.setColor(Color.RED);

g.drawLine(dx,dy,ax,ay);

g.drawLine(ax,ay,ex,ey);

g.drawLine(ex,ey,bx,by);

g.drawLine(bx,by,cx,cy);

g.drawLine(cx,cy,dx,dy);

g.setColor(Color.BLUE);

g.drawOval(0,0,2*radius,2*radius);

g.drawLine(radius,radius,ax,ay);

g.drawLine(radius,radius,bx,by);

g.drawLine(radius,radius,cx,cy);

g.drawLine(radius,radius,dx,dy);

g.drawLine(radius,radius,ex,ey);

}

}

7.2用Graphics2D绘制一条抛物线,设抛物线方程的系数从图形界面输入。

程序运行结果:

frame源文件:

ParabolaFrame.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

/**

*7.2用Graphics2D画抛物线,抛物线方程的系数从图形界面输入.

*@author黎明你好

*/

publicclassParabolaFrameextendsJFrameimplementsActionListener

{

privatestaticfinallongserialVersionUID=1L;

privateParabolaCanvascanvas;//画出抛物线的花瓣

privateJTextFieldinputA_text,inputB_text,inputC_text;//三个文本框,接收方程系数

privateJButtonconfirm_button;//确定按钮

privateJLabeldisplay_label;

privateJPanelpanel;//布局面板

privatedoublea,b,c;//抛物线三个系数

publicParabolaFrame()

{

super("第七章,第二题");

a=1;

b=0;

c=0;

panel=newJPanel();

canvas=newParabolaCanvas(a,b,c);

inputA_text=newJTextField(""+a,3);

inputB_text=newJTextField(""+b,3);

inputC_text=newJTextField(""+c,3);

confirm_button=newJButton("确定");

display_label=newJLabel();

panel.add(newJLabel("a="));

panel.add(inputA_text);

panel.add(newJLabel("b="));

panel.add(inputB_text);

panel.add(newJLabel("c="));

panel.add(inputC_text);

panel.add(confirm_button);

panel.add(display_label);

confirm_button.addActionListener(this);

inputA_text.addActionListener(this);

inputB_text.addActionListener(this);

inputC_text.addActionListener(this);

setLabel();

this.add(panel,BorderLayout.NORTH);

this.add(canvas,BorderLayout.CENTER);

this.setBounds(50,50,800,600);

this.setVisible(true);

this.validate();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

publicvoidactionPerformed(ActionEvente)

{

try

{

a=Double.parseDouble(inputA_text.getText());

b=Double.parseDouble(inputB_text.getText());

c=Double.parseDouble(inputC_text.getText());

}

catch(NumberFormatExceptionEe)

{

a=0;

b=0;

c=0;

}

canvas.set(a,b,c);

canvas.repaint();

setLabel();

}

publicvoidsetLabel()

{

Stringstr="方程:

y=";

str+=a==0?

"":

(a==1?

"x^2":

a+"x^2");

str+=b==0?

"":

(a==0?

(b==1?

"x":

b+"x"):

(b==1?

"+x":

"+"+b

+"x"));

str+=c==0?

"":

(a==0&&b==0?

c:

"+"+c);

display_label.setText(str);

}

publicstaticvoidmain(Stringargs[])

{

newParabolaFrame();

}

}

 

画抛物线的画板类:

ParabolaCanvas.java

/**

*画板类,在上面画抛物线

*@author黎明你好

*/

classParabolaCanvasextendsCanvas

{

privatestaticfinallongserialVersionUID=1L;

doublea,b,c;

/**构造方法,抛物线初始状态*/

publicParabolaCanvas(doublea,doubleb,doublec)

{

this.a=a;

this.b=b;

this.c=c;

setBackground(newColor(100,240,240));

}

/**

*设置抛物线系数

*@parama-二次项系数

*@paramb-一次项系数

*@paramc-常数项

*/

publicvoidset(doublea,doubleb,doublec)

{

this.a=a;

this.b=b;

this.c=c;

}

publicvoidpaint(Graphicsg)

{

Graphics2Dg2D=(Graphics2D)g;

//画坐标系

g2D.drawLine(0,300,600,300);//横线

g2D.drawLine(300,0,300,600);//竖线中心坐标300,300

g2D.drawLine(300,0,294,10);

g2D.drawLine(300,0,306,10);//y轴箭头

g2D.drawLine(600,300,590,294);

g2D.drawLine(600,300,590,306);//x轴箭头

g2D.drawLine(200,300,200,308);

g2D.drawString("-5",197,320);

g2D.drawLine(100,300,100,308);

g2D.drawString("-10",97,320);

g2D.drawLine(400,300,400,308);

g2D.drawString("5",397,320);

g2D.drawLine(500,300,500,308);

g2D.drawString("10",497,320);

g2D.drawLine(300,100,307,100);

g2D.drawString("10",310,103);

g2D.drawLine(300,200,307,200);

g2D.drawString("5",310,203);

g2D.drawLine(300,400,307,400);

g2D.drawString("-5",310,403);

g2D.drawLine(300,500,307,500);

g2D.drawString("-10",310,503);

g2D.drawString("0,0",305,318);

g2D.drawString("y轴",310,15);

g2D.drawString("x轴",580,290);

for(inti=0;i<600;i+=20)

{

g2D.drawLine(i,300,i,303);

g2D.drawLine(300,i,303,i);

}

//下面程序为画抛物线

doublex0,y0,x1,y1,x2,y2,scale;

x0=300;

y0=0;

scale=20.0;

g2D.setColor(Color.RED);

for(x1=-15;x1<15;x1+=0.001D)

{

y1=a*x1*x1+b*x1+c;

x2=x0+x1*scale;

y2=y0+y1*scale;

g2D.fillOval((int)x2,300-(int)y2,2,2);

}

}

}

7.3利用Graphics2D的平移,缩放,旋转功能。

绘制一个六角星。

程序运行结果:

源文件:

Work7_3.java

importjava.awt.*;

importjava.awt.geom.*;

importjavax.swing.*;

/**

*7.3利用Graphics2D的平移,缩放,旋转功能。

绘制一个六角星。


*@author黎明你好

*/

publicclassWork7_3extendsJFrame

{

privatestaticfinallongserialVersionUID=1L;

publicWork7_3()

{

super("第七章,第三题");

this.add(newSixStarCanvas(80),BorderLayout.CENTER);

this.setBounds(50,50,400,400);

this.setVisible(true);

this.validate();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

publicstaticvoidmain(Stringargs[])

{

newWork7_3();

}

}

画六角形的画板类:

SixStarCanvas.java

/**

*画板类,在上面画出六角星

*通过先画一个三角形,然后旋转6次,得到六角形

*@author黎明你好

*/

classSixStarCanvasextendsCanvas

{

privatestaticfinallongserialVersionUID=1L;

/**六角星外接圆的半径*/

privateintradius;

/**一个三角形三个顶点的x点坐标集*/

privateintxPoints[];

/**一个三角形三个顶点的y点坐标集*/

privateintyPoints[];

/**

*构造方法

*@paramr-初始化外接圆半径

*/

publicSixStarCanvas(intr)

{

this.radius=r;

xPoints=newint[]{r,2*r,(int)(3*r/2)};

yPoints=newint[]{r,r,(int)(r-Math.sqrt(3)*r/2)};

}

publicvoidpaint(Graphicsg)

{

Graphics2Dg2D=(Graphics2D)g;

BasicStrokebs=newBasicStroke(1,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_MITER);

g2D.setStroke(bs);

AffineTransformtrans=newAffineTransform();

trans.translate(10,10);//移动

trans.scale(2,2);//放大

for(inti=1;i<=6;i++)

{

trans.rotate(60.0*Math.PI/180,radius,radius);//旋转

g2D.setTransform(trans);

g2D.drawPolygon(xPoints,yPoints,3);

}

}

}

7.4编写画图程序。

程序运行结果:

控制画板的窗口类源文件:

PaintFrame.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

/**

*7.4编写画图程序。

*控制画板的窗口类

*@author黎明你好

*/

publicclassPaintFrameextendsJFrameimplementsItemListener,ActionListener

{

privatestaticfinallongserialVersionUID=1L;

/**画板*/

privatePaintCanvascanvas;

/**画笔端点装饰,无装饰、圆形装饰、方形装饰*/

privateJToggleButtoncap_butt,cap_round,cap_square;

/**橡皮*/

privateJToggleButtoneraser;

/**画笔大小*/

privateJComboBoxwidth_box;

/**选择颜色的按钮*/

privateJButtonselectColor;

/**单选按钮分组*/

privateButtonGroupgroup;

privateJPanelpanel;

privateStringitem[];

privateintstrokeWidth=1,strokeCap=0,strokeJoin=BasicStroke.JOIN_BEVEL;

publicPaintFrame()

{

super("画图小程序");

canvas=newPaintCanvas();

selectColor=newJButton("");

cap_butt=newJToggleButton("标准");

cap_round=newJToggleButton("圆形");

cap_square=newJToggleButton("方形");

eraser=newJToggleButton("橡皮");

panel=newJPanel();

group=newButtonGroup();

item=newString[20];

for(inti=0;i<20;i++)

{

item[i]=""+(i+1);

}

width_box=newJComboBox(item);

width_box.setEditable(true);//组合框可以输入

cap_butt.setSelected(true);//笔形,标准为开始默认

canvas.setPenColor(Color.BLACK);

selectColor.setBackground(Color.BLACK);//画笔颜色,开始为黑色

//添加监控

width_box.addItemListener(this);

width_box.addActionListener(this);

selectColor.addActionListener(this);

cap_butt.addItemListener(this);

cap_round.addItemListener(this);

cap_square.addItemListener(this);

eraser.addItemListener(this);

//画笔形式单选按钮

group.add(cap_butt);

group.add(cap_round);

group.add(cap_square);

group.add(eraser);

//添加按钮

panel.setLayout(newFlowLayout());

panel.setBorder(BorderFactory.createTitledBorder("设置区"));

panel.add(newJLabel("笔形:

"));

panel.add(ca

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1