这个程序是实现简单绘图功能,
具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。
请高手帮忙分析
设计思路
程序框架图
2.1、程序中所用类说明
2.2、主要成员方法:
2.3、实现接口方法
2.4、线程应用
2.5、异常处理说明
程序部分源代码及注释明天要交报告了,不会写啊
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
class MyFrame extends Frame implements ActionListener
{
MenuBar menubar;
Menu menua,menub,menuc,menud;
MenuItem itema,itemb,itemc,itemd,iteme,itemf;
Button buttona,buttonb,buttonc,buttond,buttone,buttonf;
MyCanvas canvas;
MyFrame()
{
Toolkit tool=getToolkit();
Dimension dim=tool.getScreenSize();
setBounds(50,50,dim.width/2,dim.height/3);
menubar=new MenuBar();
menua=new Menu("直线");
menub=new Menu("椭圆");
menuc=new Menu("矩形");
menud=new Menu("多边形");
itema=new MenuItem("直线");
itemb=new MenuItem("空心椭圆");
itemc=new MenuItem("实心椭圆");
itemd=new MenuItem("空心矩形");
iteme=new MenuItem("实心矩形");
itemf=new MenuItem("多边形");
menubar.add(menua);
menubar.add(menub);
menubar.add(menuc);
menubar.add(menud);
menua.add(itema);
menub.add(itemb);
menub.add(itemc);
menuc.add(itemd);
menuc.add(iteme);
menud.add(itemf);
setMenuBar(menubar);
itema.addActionListener(this);
itemb.addActionListener(this);
itemc.addActionListener(this);
itemd.addActionListener(this);
iteme.addActionListener(this);
itemf.addActionListener(this);
Panel p=new Panel();
buttona=new Button("直线");
buttonb=new Button("空心椭圆");
buttonc=new Button("实心椭圆");
buttond=new Button("空心矩形");
buttone=new Button("实心矩形");
buttonf=new Button("多边形");
p.add(buttona);
p.add(buttonb);
p.add(buttonc);
p.add(buttond);
p.add(buttone);
p.add(buttonf);
buttona.addActionListener(this);
buttonb.addActionListener(this);
buttonc.addActionListener(this);
buttond.addActionListener(this);
buttone.addActionListener(this);
buttonf.addActionListener(this);
buttona.setBackground(Color.pink);
buttonb.setBackground(Color.pink);
buttonc.setBackground(Color.pink);
buttond.setBackground(Color.pink);
buttone.setBackground(Color.pink);
buttonf.setBackground(Color.pink);
setVisible(true);
validate();
canvas=new MyCanvas();
add(canvas,BorderLayout.CENTER);
add(p,BorderLayout.SOUTH);
setBounds(100,100,400,400);
setVisible(true);
validate();
setBounds(200,200,500,550);
setVisible(true);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
class MyCanvas extends Canvas
{
int line,koval,oval,krect,rect,polygon;
public void setLine(int line)
{
this.line=line;
}
public void setkoval(int koval)
{
this.koval=koval;
}
public void setOval(int oval)
{
this.oval=oval;
}
public void setkrect(int krect)
{
this.krect=krect;
}
public void setRect(int rect)
{
this.rect=rect;
} public void setpolygon(int polygon)
{
this.polygon=polygon;
}
public void paint(Graphics g)
{
if(line==1)
{
g.drawLine(150,100,500,300);
}
else if(koval==1)
{
g.drawOval(100,50,300,350);
}
else if(oval==1)
{
g.setColor(Color.pink);
g.fillOval(100,100,300,200);
}
else if(krect==1)
{
g.drawRect(120,100,200,300);
}
else if(rect==1)
{
g.setColor(Color.orange);
g.fillRect(100,100,300,250);
}
else if(polygon==1)
{
int px[]={220,300,100,250,150,70};
int py[]={20,300,330,150,190,70};
g.setColor(Color.green);
g.fillPolygon(px,py,6);
}
}
} public void actionPerformed(ActionEvent e)
{
if(e.getSource()==itema)
{ canvas.setLine(1);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemb)
{ canvas.setLine(0);
canvas.setkoval(1);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemc)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(1);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemd)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(1);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==iteme)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(1);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemf)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(1);
canvas.repaint();
}
else if(e.getSource()==buttona)
{ canvas.setLine(1);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttonb)
{ canvas.setLine(0);
canvas.setkoval(1);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttonc)
{canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(1);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttond)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(1);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttone)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(1);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttonf)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(1);
canvas.repaint();
}
}
}public class HuaBu
{ public static void main(String args[])
{ MyFrame frame=new MyFrame() ;
frame.setTitle("~~您可以在这张画布上画出你喜欢的图形哦~~");
}
}
具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。
请高手帮忙分析
设计思路
程序框架图
2.1、程序中所用类说明
2.2、主要成员方法:
2.3、实现接口方法
2.4、线程应用
2.5、异常处理说明
程序部分源代码及注释明天要交报告了,不会写啊
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
class MyFrame extends Frame implements ActionListener
{
MenuBar menubar;
Menu menua,menub,menuc,menud;
MenuItem itema,itemb,itemc,itemd,iteme,itemf;
Button buttona,buttonb,buttonc,buttond,buttone,buttonf;
MyCanvas canvas;
MyFrame()
{
Toolkit tool=getToolkit();
Dimension dim=tool.getScreenSize();
setBounds(50,50,dim.width/2,dim.height/3);
menubar=new MenuBar();
menua=new Menu("直线");
menub=new Menu("椭圆");
menuc=new Menu("矩形");
menud=new Menu("多边形");
itema=new MenuItem("直线");
itemb=new MenuItem("空心椭圆");
itemc=new MenuItem("实心椭圆");
itemd=new MenuItem("空心矩形");
iteme=new MenuItem("实心矩形");
itemf=new MenuItem("多边形");
menubar.add(menua);
menubar.add(menub);
menubar.add(menuc);
menubar.add(menud);
menua.add(itema);
menub.add(itemb);
menub.add(itemc);
menuc.add(itemd);
menuc.add(iteme);
menud.add(itemf);
setMenuBar(menubar);
itema.addActionListener(this);
itemb.addActionListener(this);
itemc.addActionListener(this);
itemd.addActionListener(this);
iteme.addActionListener(this);
itemf.addActionListener(this);
Panel p=new Panel();
buttona=new Button("直线");
buttonb=new Button("空心椭圆");
buttonc=new Button("实心椭圆");
buttond=new Button("空心矩形");
buttone=new Button("实心矩形");
buttonf=new Button("多边形");
p.add(buttona);
p.add(buttonb);
p.add(buttonc);
p.add(buttond);
p.add(buttone);
p.add(buttonf);
buttona.addActionListener(this);
buttonb.addActionListener(this);
buttonc.addActionListener(this);
buttond.addActionListener(this);
buttone.addActionListener(this);
buttonf.addActionListener(this);
buttona.setBackground(Color.pink);
buttonb.setBackground(Color.pink);
buttonc.setBackground(Color.pink);
buttond.setBackground(Color.pink);
buttone.setBackground(Color.pink);
buttonf.setBackground(Color.pink);
setVisible(true);
validate();
canvas=new MyCanvas();
add(canvas,BorderLayout.CENTER);
add(p,BorderLayout.SOUTH);
setBounds(100,100,400,400);
setVisible(true);
validate();
setBounds(200,200,500,550);
setVisible(true);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
class MyCanvas extends Canvas
{
int line,koval,oval,krect,rect,polygon;
public void setLine(int line)
{
this.line=line;
}
public void setkoval(int koval)
{
this.koval=koval;
}
public void setOval(int oval)
{
this.oval=oval;
}
public void setkrect(int krect)
{
this.krect=krect;
}
public void setRect(int rect)
{
this.rect=rect;
} public void setpolygon(int polygon)
{
this.polygon=polygon;
}
public void paint(Graphics g)
{
if(line==1)
{
g.drawLine(150,100,500,300);
}
else if(koval==1)
{
g.drawOval(100,50,300,350);
}
else if(oval==1)
{
g.setColor(Color.pink);
g.fillOval(100,100,300,200);
}
else if(krect==1)
{
g.drawRect(120,100,200,300);
}
else if(rect==1)
{
g.setColor(Color.orange);
g.fillRect(100,100,300,250);
}
else if(polygon==1)
{
int px[]={220,300,100,250,150,70};
int py[]={20,300,330,150,190,70};
g.setColor(Color.green);
g.fillPolygon(px,py,6);
}
}
} public void actionPerformed(ActionEvent e)
{
if(e.getSource()==itema)
{ canvas.setLine(1);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemb)
{ canvas.setLine(0);
canvas.setkoval(1);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemc)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(1);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemd)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(1);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==iteme)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(1);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==itemf)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(1);
canvas.repaint();
}
else if(e.getSource()==buttona)
{ canvas.setLine(1);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttonb)
{ canvas.setLine(0);
canvas.setkoval(1);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttonc)
{canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(1);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttond)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(1);
canvas.setRect(0);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttone)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(1);
canvas.setpolygon(0);
canvas.repaint();
}
else if(e.getSource()==buttonf)
{ canvas.setLine(0);
canvas.setkoval(0);
canvas.setOval(0);
canvas.setkrect(0);
canvas.setRect(0);
canvas.setpolygon(1);
canvas.repaint();
}
}
}public class HuaBu
{ public static void main(String args[])
{ MyFrame frame=new MyFrame() ;
frame.setTitle("~~您可以在这张画布上画出你喜欢的图形哦~~");
}
}
MenuBar menubar;
Menu menua,menub,menuc,menud;
MenuItem itema,itemb,itemc,itemd,iteme,itemf;
Button buttona,buttonb,buttonc,buttond,buttone,buttonf;
MyCanvas canvas;
MyFrame()
{
Toolkit tool=getToolkit();
Dimension dim=tool.getScreenSize();
setBounds(50,50,dim.width/2,dim.height/3); canvas=new MyCanvas();
add(canvas,BorderLayout.CENTER);
add(p,BorderLayout.SOUTH);
setBounds(100,100,400,400);
setVisible(true);
validate();
setBounds(200,200,500,550);
setVisible(true);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
add(canvas,BorderLayout.CENTER);
addWindowListener(new WindowAdapter()
public void setLine(int line)
public void paint(Graphics g)
public void actionPerformed(ActionEvent e)
addWindowListener(new WindowAdapter() //注册一个监听者适配器,用于处理窗口事件
public void setLine(int line)
public void paint(Graphics g) //用于在容器中绘图
public void actionPerformed(ActionEvent e) //在该方法中处理单击按钮,菜单等事件
validate();
首先根据e.getSource()判断是哪个Button点击,然后调用方法setXXX设置标志位
最后调用repaint方法重绘界面就酱紫