




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章7.1編寫一個(gè)應(yīng)用程序,繪制一個(gè)五角星。程序運(yùn)轉(zhuǎn)結(jié)果:源文件:Work7_1.javaimportjava.awt.*;importjavax.swing.*;/***7.1畫一個(gè)五角星<BR>*@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拂曉你好*/classFiveStarCanvas{privatestaticfinallong
extendsCanvasserialVersionUID
=1L;/**
五角星外接圓的半徑
*/privateint
radius
;/***結(jié)構(gòu)方法@paramr-初始化外接圓半徑*/publicFiveStarCanvas(intr)this{.radius=r;}publicvoidpaint(Graphicsg){intax=radius;intay=0;intbx=(int)(radius*(1-Math.cos((18*Mcx=(int)(radius*(1+Math.cos((18*Mdx=(int)(radius*(1-Math.cos((54*Mex=(int)(radius*(1+Math.cos((54*Mby=(int)(radius*(1-Math.sin((18*Mcy=(int)(radius*(1-Math.sin((18*Mdy=(int)(radius*(1+Math.sin((54*Mey=(int)(radius*(1+Math.sin((54*Math.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);}}
PI)/180)));PI)/180)));PI)/180)));PI)/180)));PI)/180)));PI)/180)));PI)/180)));PI)/180)));7.2用Graphics2D繪制一條拋物線,設(shè)拋物線方程的系數(shù)從圖形界面輸入。程序運(yùn)轉(zhuǎn)結(jié)果:frame源文件:ParabolaFrame.javaimportimportimport
java.awt.*;java.awt.event.*;javax.swing.*;/***7.2用Graphics2D畫拋物線,拋物線方程的系數(shù)從圖形界面輸入.<BR>*@author拂曉你好*/publicclassParabolaFrameextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privateParabolaCanvascanvas;//畫出拋物線的花瓣privateJTextFieldinputA_text,inputB_text,inputC_text;//三個(gè)文本框,接收方程系數(shù)privateJButtonconfirm_button;//確立按鈕privateJLabeldisplay_label;privateJPanelpanel;//布場(chǎng)面板privatedoublea,b,c;//拋物線三個(gè)系數(shù)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="));publicstaticvoidpanel.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){=0;=0;=0;}canvas.set(a,b,c);canvas.repaint( );setLabel( );}publicvoid{
setLabel( )Stringstr="方程:y=";str+=a==0?"":(a==1?str+=b==0?"":(a==0?(==1?"+x":"+"+b+"x"));str+=c==0?"":(a==0&&display_label.setText(str);}
"x^2"b==1?b==0?
:
a+"x"c:
"x^2":b+"+"+
);"x"c);
):(
bmain(Stringargs[]){newParabolaFrame( );}}畫拋物線的畫板類:ParabolaCanvas.java/**畫板類,在上邊畫拋物線@author拂曉你好*/classParabolaCanvasextendsCanvas{privatestaticfinallongserialVersionUID=1L;doublea,b,c;/**結(jié)構(gòu)方法,拋物線初始狀態(tài)*/publicParabolaCanvas(doublea,doubleb,doublec){this.a=a;this.b=b;this.c=c;}setBackground(newColor(100,240,240));/**設(shè)置拋物線系數(shù)@parama-二次項(xiàng)系數(shù)@paramb-一次項(xiàng)系數(shù)@paramc-常數(shù)項(xiàng)*/publicvoidset(double{
a,
double
b,
double
c)thisthisthis
.a=a;.b=b;.c=c;}publicvoid{
paint(Graphicsg)Graphics2Dg2D=(Graphics2D)g;//畫坐標(biāo)系g2D.drawLine(0,300,600,300);//橫線g2D.drawLine(300,0,300,600);//豎線中心坐標(biāo)300,300g2D.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);}下邊程序?yàn)楫嫆佄锞€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的平移,縮放,旋轉(zhuǎn)功能。繪制一個(gè)六角星。程序運(yùn)轉(zhuǎn)結(jié)果:源文件:Work7_3.javaimportimportimport
java.awt.*;java.awt.geom.*;javax.swing.*;/***7.3利用
Graphics2D
的平移,縮放,旋轉(zhuǎn)功能。繪制一個(gè)六角星。
<BR>@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/***畫板類,在上邊畫出六角星<BR>*經(jīng)過先畫一個(gè)三角形,而后旋轉(zhuǎn)6次,獲得六角形<BR>*@author拂曉你好*/classSixStarCanvasextendsCanvas{privatestaticfinallongserialVersionUID=1L;/**六角星外接圓的半徑*/privateintradius;/**一個(gè)三角形三個(gè)極點(diǎn)的x點(diǎn)坐標(biāo)集*/privateintxPoints[];/**一個(gè)三角形三個(gè)極點(diǎn)的y點(diǎn)坐標(biāo)集*/privateintyPoints[];/**結(jié)構(gòu)方法@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);//挪動(dòng)trans.scale(2,2);//放大for(inti=1;i<=6;i++){trans.rotate(60.0*Math.PI/180,radius,radius);//旋轉(zhuǎn)g2D.setTransform(trans);g2D.drawPolygon(xPoints,yPoints,3);}}}7.4編寫繪圖程序。程序運(yùn)轉(zhuǎn)結(jié)果:控制畫板的窗口類源文件:PaintFrame.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/***7.4編寫繪圖程序??刂飘嫲宓拇翱陬怈author拂曉你好*/publicclassPaintFrameextendsJFrameimplementsItemListener,ActionListener{privatestaticfinallongserialVersionUID=1L;/**畫板*/privatePaintCanvascanvas;/**畫筆端點(diǎn)裝修,無裝修、圓形裝修、方形裝修*/privateJToggleButtoncap_butt,cap_round,cap_square;/**橡皮*/privateJToggleButtoneraser;/**畫筆大小*/privateJComboBoxwidth_box;/**選擇顏色的按鈕*/privateJButtonselectColor;/**單項(xiàng)選擇按鈕分組*/privateButtonGroupgroup;privateJPanelpanel;privateStringitem[];privateintstrokeWidth=1,strokeCap=0,strokeJoin=BasicStroke.JOIN_BEVEL;publicPaintFrame( ){super("繪圖小程序");canvas=newPaintCanvas( );selectColor=newJButton("");cap_butt=newJToggleButton("標(biāo)準(zhǔn)");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);//筆形,標(biāo)準(zhǔn)為開始默認(rèn)canvas.setPenColor(Color.BLACK);selectColor.setBackground(Color.BLACK);//畫筆顏色,開始為黑色增添監(jiān)控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);畫筆形式單項(xiàng)選擇按鈕group.add(cap_butt);group.add(cap_round);group.add(cap_square);group.add(eraser);增添按鈕panel.setLayout(newFlowLayout( ));panel.setBorder(BorderFactory.createTitledBorder("設(shè)置區(qū)"));panel.add(newJLabel("筆形:"));panel.add(cap_butt);panel.add(cap_round);panel.add(cap_square);panel.add(eraser);panel.add(width_box);panel.add(newJLabel("顏色:"));panel.add(selectColor);this.add(panel,BorderLayout.SOUTH);this.add(canvas,BorderLayout.CENTER);this.setBounds(100,50,850,550);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidactionPerformed(ActionEvente){if(e.getSource( )==selectColor{
)Colorc=JColorChooser.Color.WHITE);//用來選擇字顏色selectColor.setBackground(c);canvas.setPenColor(c);}elseif(e.getSource( )==width_box{
showDialog)
(this
,"選擇顏色
",try{strokeWidth=Integer.parseInt(width_box.getSelectedItem( ).toString( ));}catch(NumberFormatExceptione2){strokeWidth=1;}}canvas.setStroke(strokeWidth,strokeCap,strokeJoin);//當(dāng)在組合框輸入畫筆寬度時(shí)候,設(shè)置畫筆}publicvoiditemStateChanged(ItemEvente){if(e.getSource( )==cap_butt){canvas.setPenColor(Color.black);strokeCap=BasicStroke.CAP_BUTT;}elseif(e.getSource( )==cap_round){canvas.setPenColor(Color.black);strokeCap=BasicStroke.CAP_ROUND;}elseif(e.getSource( )==cap_square){canvas.setPenColor(Color.black);strokeCap=BasicStroke.CAP_SQUARE;}elseif(e.getSource( )==eraser){canvas.setPenColor(Color.white);canvas.setStroke(strokeWidth,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_BEVEL);}elseif(e.getSource( )==width_box)//當(dāng)在組合框里面選擇畫筆寬度時(shí)候,設(shè)置畫筆寬度try{{strokeWidth=Integer.parseInt(width_box.getSelectedItem( ).toString( ));}catch(NumberFormatExceptione2){strokeWidth=1;}}canvas.setStroke(strokeWidth,strokeCap,strokeJoin);}publicstaticvoidmain(Stringargs[]){newPaintFrame( );}}用來繪圖的畫板類:PaintCanvasimportjava.awt.*;importjava.awt.event.*;importjava.awt.image.BufferedImage;/**畫板類,在上邊作圖。@author拂曉你好*/publicclassPaintCanvasextendsCanvasimplementsMouseMotionListener,MouseListener{privatestaticfinallongserialVersionUID=1L;privateintx=-1,y=-1;privateintw=800,h=600;//畫布大小privateColorpenColor;//畫筆顏色privateBufferedImageimage;privateGraphics2Dg2d;privateBasicStrokebs;//畫筆publicPaintCanvas( ){bs=newBasicStroke(1,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);image=newBufferedImage(w,h,BufferedImage.TYPE_INT_RGB);g2d=image.createGraphics( );penColor=Color.BLACK;g2d.fillRect(0,0,w,h);//初始畫個(gè)白色的矩形g2d.setColor(penColor);this.addMouseMotionListener(this);this.addMouseListener(this);}/**設(shè)置畫筆顏色@paramc-設(shè)置成的顏色*/publicvoidsetPenColor(Colorc){penColor=c;}/***設(shè)置畫筆*@paramwidth-BasicStroke的寬度*@paramcap-BasicStroke端點(diǎn)的裝修@paramjoin-應(yīng)用在路徑線段交匯處的裝修*/publicvoidsetStroke(intwidth,{
int
cap,
int
join)try{bs=newBasicStroke(width,cap,join);}catch(IllegalArgumentExceptionee){bs=null;}}/**鼠標(biāo)按鍵在組件上按下時(shí)調(diào)用。*/publicvoidmousePressed(MouseEvente){x=(
int)e.getX( );y=(
int)e.getY( );this
.setCursor(Cursor.
getPredefinedCursor
(Cursor.
CROSSHAIR_CURSOR));
/設(shè)置鼠標(biāo)形狀十字光標(biāo)種類g2d.drawLine(x,y,x,y);this.repaint( );}/**鼠標(biāo)按鈕在組件上開釋時(shí)調(diào)用。*/publicvoidmouseReleased(MouseEvente){this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));//設(shè)置鼠標(biāo)形狀默認(rèn)光標(biāo)種類}/**鼠標(biāo)按鍵在組件上按下并拖動(dòng)時(shí)調(diào)用*/publicvoidmouseDragged(MouseEvente){intx2=(int)e.getX( );inty2=(int)e.getY( );if(x!=-1&&y!=-1){if(penColor!=null)g2d.setColor(penColor);if(bs!=null)g2d.setStroke(bs);g2d.drawLine(x,y,x2,y2);this.repaint( );}x=x2;y=y2;}publicvoidmouseClicked(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseMoved(MouseEvente){}publicvoidpaint(Graphicsg){g.drawImage(image,0,0,this);//將內(nèi)存中的圖像iamge繪制在畫布上}publicvoidupdate(Graphicsg){paint(g);}}7.5輸入二次曲線的系數(shù),畫出二次曲線程序運(yùn)轉(zhuǎn)結(jié)果:主窗口源文件:ConicFrameimportimportimport
java.awt.*;java.awt.event.*;javax.swing.*;/**輸入二次曲線的系數(shù)以及區(qū)間,畫出二次曲線@author拂曉你好*/publicclassConicFrameextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privateStringhelpString="三種基本曲線方程:\n1:橢圓(e<0);2:雙曲線(c<0,e<0);3:拋物線(a=0或c=0);";privateBorderLayoutborderLayout;//JFrame的布局privateJTextFieldinputA_text,inputB_text,inputC_text,inputD_text,inputE_text;//三個(gè)文本框,接收方程系數(shù)privateJButtonconfirm_button,clean_button;//確立按鈕privateJPanelcontrol_panel,north_panel;//擱置輸入文本框,確立按鈕,顯示方程
labelprivateDrawConicCanvasprivatedoublea=1,
b=1,
canvas;c=1,
d=1,
e=1;
//二次曲線線三個(gè)系數(shù)/**結(jié)構(gòu)方法*/public
ConicFrame( ){super("第七章,第五題,二次曲線");borderLayout=newBorderLayout(5,5);inputA_text=newJTextField("",3);inputB_text=newJTextField("",3);inputC_text=newJTextField("",3);inputD_text=newJTextField("",3);inputE_text=newJTextField("",3);confirm_button=newJButton("確立");clean_button=newJButton("清空");control_panel=newJPanel( );north_panel=newJPanel( );canvas=newDrawConicCanvas( );control_panel.setBackground(Color.PINK);confirm_button.addActionListener(this);clean_button.addActionListener(this);north_panel.setLayout(newGridLayout(2,1));control_panel.add(newJLabel("二次曲線方程:a"));control_panel.add(inputA_text);control_panel.add(newJLabel("X^2+b"));control_panel.add(inputB_text);control_panel.add(newJLabel("X+c"));control_panel.add(inputC_text);control_panel.add(newJLabel("Y^2+d"));control_panel.add(inputD_text);control_panel.add(newJLabel("Y+e"));control_panel.add(inputE_text);control_panel.add(newJLabel("=0"));control_panel.add(confirm_button);control_panel.add(clean_button);north_panel.add(newJLabel(helpString,JLabel.CENTER));north_panel.add(control_panel);this.setLayout(borderLayout);this.add(north_panel,BorderLayout.NORTH);this.add(canvas,BorderLayout.CENTER);this.add(newJLabel(""),BorderLayout.SOUTH);this.add(newJLabel(""),BorderLayout.WEST);this.add(newJLabel(""),BorderLayout.EAST);this.setBounds(50,50,800,600);this.setVisible(true);this.validate( );this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidactionPerformed(ActionEventargs){if(args.getSource( )==confirm_button){try{a=Double.parseDouble(inputA_text.getText( ));b=Double.parseDouble(inputB_text.getText( ));c=Double.parseDouble(inputC_text.getText( ));d=Double.parseDouble(inputD_text.getText( ));e=Double.parseDouble(inputE_text.getText( ));}catch(NumberFormatExceptionEe){JOptionPane.showMessageDialog(this,"輸入非數(shù)字字符\n請(qǐng)修改","錯(cuò)誤警示",JOptionPane.ERROR_MESSAGE);}canvas.set(a,b,c,d,e);canvas.repaint( );}elseif(args.getSource( )==clean_button){inputA_text.setText("");inputB_text.setText("");inputC_text.setText("");inputD_text.setText("");inputE_text.setText("");}}publicstaticvoidmain(String[]args){newConicFrame( );}}面二次曲線的畫板類:DrawConicCanvas.javaimportjava.awt.Canvas;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;/**畫二次曲線的畫布類@author拂曉你好*/publicclassDrawConicCanvasextends{privatestaticfinallongserialVersionUID/**方程的5個(gè)系數(shù),ax^2+bx+cy^2+dy+e=0*/privatedoublea,b,c,d,e;
Canvas=1L;/**
二次曲線的區(qū)間
*/privatedouble
min
=-15,
max=15;
//假如需要控制區(qū)間,能夠?qū)@兩值進(jìn)行設(shè)置/**結(jié)構(gòu)方法,二次曲線初始狀態(tài)*/publicDrawConicCanvas( ){setBackground(newColor(100,240,240));}/**設(shè)置方程系數(shù)*/publicvoid
set(
double
a,
double
b,
double
c,
double
d,
double
e){thisthisthisthisthis
.a=a;.b=b;.c=c;.d=d;.e=e;}publicvoid{
paint(Graphicsg)Graphics2Dg2D=(Graphics2D)g;//畫坐標(biāo)系g2D.drawLine(0,300,600,300);g2D.drawLine(300,0,300,600);
//橫線//豎線中心坐標(biāo)
300,300g2D.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);}下邊程序?yàn)楫嫸吻€doublex0,y0,x1,y1=0,x2,y2,scale;max=15;min=-15;x0=300;y0=0;scale=20.0;g2D.setColor(Color.RED);if(a==0&&c!=0)//拋物線,水平{if(b>0)//確立拋物線x軸的最大值,最小值{max=d*d/(4*b*c)-e/b;if(b<0)}{min=d*d/(4*b*c)-e/b;}for(x1=min;x1<=max;x1+=0.001D){y1=Math.sqrt(d*d/(4*c*c)-b*x1/c-e/c)-d/(2*c);x2=x0+x1*scale;y2=y0+y1*scale;g2D.fillOval((int)x2,300-(int)y2,2,2);}for(x1=min;x1<=max;x1+=0.001D){y1=-Math.sqrt(d*d/(4*c*c)-b*x1/c-e/c)-d/(2*c);x2=x0+x1*scale;y2=y0+y1*scale;g2D.fillOval((
int
)x2,300-(
int)y2,2,2);}}elseif(a!=0&&c==0)//拋物線,垂直{for(x1=-15;x1<=15;x1+=0.001D){y1=(a*x1*x1+b*x1+e)/d;x2=x0+x1*scale;y2=y0+y1*scale;g2D.fillOval((int)x2,300-(int)y2,2,2);}}elseif
(
a==0&&
c==0)
//直線方程if
(
{d!=0){for(x1=-15;x1<=15;x1+=0.001D){y1=-(e+b*x1)/d;x2=x0+x1*scale;y2=y0+y1*scale;}g2D.fillOval((int)x2,300-(int)y2,2,2);}if(b!=0){for(y1=-15;y1<=15;y1+=0.001D){x1=-(e+d*y1)/d;x2=x0+x1*scale;y2=y0+y1*scale;g2D.fillOval((int)x2,300-(int)y2,2,2);}}}elseif(e<0)//橢圓,雙曲線方程{System.out.println("橢圓,雙曲線");doubler=Math.sqrt(b*b/(4*a*a)+d*d/(4*a*c)-e/a);//橫軸的半徑doubleunmin=0,unmax=0;//雙曲線的時(shí)候點(diǎn)x取不到值得區(qū)間徑System.out.println("橫軸半徑"+r);if(c>0)//橢圓的時(shí)候,計(jì)算半徑,并確立x區(qū)間{max=r-b/(2*a);min=-r-b/(2*a);else}{unmin=-r-b/(2*a);unmax=r-b/(2*a);}for(x1=min;x1<=max;x1+=0.001D){if(c<0&&(x1>unmin&&x1<unmax))//是雙曲線的時(shí)候,不畫點(diǎn)x取不到值得區(qū)間continue;y1=Math.sqrt(b*b/(4*a*c)+d*d/(4*c*c)-e/c-a*(x1+b/(2*a))*(x1+b/(2*a))/c)-d/(c*2);x2=x0+x1*scale;y2=y0+y1*scale;g2D.fillOval((int)x2,300-(int)y2,2,2);}for(x1=min;x1<=max;x1+=0.001D){if(c<0&&(x1>unmin&&x1<unmax))//是雙曲線的時(shí)候,不畫點(diǎn)x取不到值得區(qū)間continue;y1=-Math.sqrt(b*b/(4*a*c)+d*d/(4*c*c)-e/c-a*(x1+b/(2*a))*(x1+b/(2*a))/c)-d/(c*2);x2=x0+x1*scale;y2=y0+y1*scale;g2D.fillOval((int)x2,300-(int)y2,2,2);}}}}7.6.寫音樂播放器,只好播放wav,mid格式的。程序運(yùn)轉(zhuǎn)結(jié)果:音樂播放器源文件:AudioClipFrame.javaimportjava.awt.*;.*;importjavax.swing.*;importjava.awt.event.*;importjava.io.*;importjava.applet.*;importjavax.swing.filechooser.FileFilter;/***編寫音樂播放器,只好播放wav,mid格式的。@author拂曉你好*/publicclass
AudioClipFrame
extends
JFrame
implements
ItemListener,ActionListener{privatestaticfinallong/**組合框,用于儲(chǔ)存音頻列表
serialVersionUID*/
=1L;privateJComboBoxcomboBox;/**增添音頻時(shí),選擇文件的文件對(duì)話框*/privateJFileChooserfiledialog;/**按鈕:播放、循環(huán)、停止、增添、刪除*/privateJButtonplay_button,loop_button,stop_button,open_button,del_button;/**顯示目前播放音頻的label*/privateJLabelmessage_label;/**布局用的panel*/privateJPanellist_panel,control_panel;/**儲(chǔ)存增添的音頻文件的絕對(duì)路徑*/privateFilefileArray[]=newFile[100];/**播放用的類*/privateAudioClipclip=null;/**用來儲(chǔ)存目前播放文件的文件名*/privateStringfileName;publicAudioClipFrame( ){super("音樂播放器-第七章,第六題");filedialog=newJFileChooser(鋼琴曲\\midi");filedialog.addChoosableFileFilter(newMyFileFilter("wav"));filedialog.addChoosableFileFilter(newMyFileFilter("mid"));list_panel=newJPanel( );control_panel=newJPanel( );comboBox=newJComboBox( );open_button=newJButton("增添");del_button=newJButton("刪除");play_button=newJButton("播放");loop_button=newJButton("循環(huán)");stop_button=newJButton("停止");message_label=newJLabel("請(qǐng)?jiān)鎏硪纛l文件");message_label.setHorizontalAlignment(JLabel.CENTER);fileArray[0]=null;comboBox.addItem("");comboBox.setEditable(false);comboBox.addItemListener(this);open_button.addActionListener(this);del_button.addActionListener(this);play_button.addActionListener(this);stop_button.addActionListener(this);loop_button.addActionListener(this);list_panel.setLayout(newBorderLayout( ));list_panel.add(comboBox,BorderLayout.CENTER);list_panel.setBorder(BorderFactory.createTitledBorder("音頻列表"));control_panel.add(open_button);control_panel.add(del_button);control_panel.add(play_button);control_panel.add(stop_button);control_panel.add(loop_button);control_panel.setBorder(BorderFactory.createTitledBorder("控制按鈕"));this.setLayout(newBorderLayout(20,10));this.add(message_label,BorderLayout.NORTH);this.add(list_panel,BorderLayout.CENTER);this.add(control_panel,BorderLayout.SOUTH);this.setBounds(300,200,450,190);this.setVisible(true);this
.addWindowListener(
newWindowAdapter( ){publicvoid
windowClosing(WindowEvente
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租地合同附屬協(xié)議
- 山東省濟(jì)寧市任城區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 湖南省郴州市2024-2025學(xué)年高一上學(xué)期期末考試生物學(xué)試題(含答案)
- 離婚協(xié)議書條款補(bǔ)充協(xié)議
- 初中數(shù)學(xué)競(jìng)賽指導(dǎo)策略訓(xùn)練課教案
- 水務(wù)工程設(shè)計(jì)與施工合同管理協(xié)議
- 非謂語動(dòng)詞的用法與解析:高中英語語法
- (一模)2025屆安徽省“江南十?!备呷?lián)考地理試卷(含官方答案)
- 電氣物資知識(shí)培訓(xùn)課件
- 水療產(chǎn)品知識(shí)培訓(xùn)課件
- 科學(xué)通史學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 手提花籃培訓(xùn)課件
- 高職旅游專業(yè)《旅游心理學(xué)》說課稿
- 三至六年級(jí)重點(diǎn)句型(素材)湘少版小學(xué)英語
- 二年級(jí)數(shù)學(xué)上冊(cè)100道口算題大全 (每日一套共26套)
- 圍手術(shù)期過敏反應(yīng)課件
- 物流無人機(jī)垂直起降場(chǎng)選址與建設(shè)規(guī)范
- 《水電工程邊坡設(shè)計(jì)規(guī)范》(NB/T10512-2021)
- 立案委托書法律文書撰寫指南
- HGT 6332-2024《液體脲醛緩釋肥料》
- 綜述的寫作方法和技巧
評(píng)論
0/150
提交評(píng)論