📄 例9.3-9.7.java
字号:
//Example 9.3-9.7
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.io.*;
class MyLocation
{
int x,y;
public MyLocation(){x=0;y=0;}
public MyLocation(int i1,int i2){x=i1;y=i2;}
public int get_x(){ return x; }
public int get_y(){ return y; }
}
class MyPoint extends MyLocation
{
boolean visible=false;
Color c=Color.black;
public MyPoint(){ super(); }
public MyPoint(int x,int y){ super(x,y); }
public void show(){ visible=true; }
public void hide(){ visible=false; }
public boolean is_visible(){ return visible; }
public void set_color(Color cc){ c=cc; }
public Color get_color(){ return c; }
public void move_to(int endX,int endY){x=endX;y=endY; }
}
class MyCircle extends MyPoint
{
int radius;
public MyCircle(){super();radius=0; }
public MyCircle(int xx,int yy,int r){super(xx,yy);radius=r;}
public int get_r(){ return radius; }
public void expand(int delta)
{
hide();radius=radius+delta;
if(radius<0)radius=0;
show();
}
public void contract(int delta){ expand(-delta); }
}
class MyCanvas extends Component
{
final int MaxPoint=50;
final int MaxCircle=50;
private int nCurrentPoint=0,nCurrentCircle=0;
MyPoint[] pointTable=new MyPoint[MaxPoint];
MyCircle[] circleTable=new MyCircle[MaxCircle];
public MyCanvas(){ super();nCurrentPoint=0;nCurrentCircle=0;}
public void addPoint(MyPoint pt)
{
pointTable[nCurrentPoint]=pt;nCurrentPoint++;
}
public void addCircle(MyCircle cl)
{
circleTable[nCurrentCircle]=cl;nCurrentCircle++;
}
public void paint(Graphics g)
{
int i,x,y,r;
for(i=0;i<nCurrentPoint;i++)
{
if(pointTable[i].is_visible())
{
g.setColor(pointTable[i].get_color());
x=pointTable[i].get_x();y=pointTable[i].get_y();
g.drawLine(x,y,x,y);
}
}
for(i=0;i<nCurrentCircle;i++)
{
if(circleTable[i].is_visible())
{
g.setColor(circleTable[i].get_color());
x=circleTable[i].get_x();y=circleTable[i].get_y();
r=circleTable[i].get_r();
x=x-r;y=y-r;r=2*r;
g.drawOval(x,y,r,r);
}
}
}
}
class tt implements WindowListener
{
public static void main(String args[])
{
Frame f=new Frame("My Canvas");
MyCanvas mc=new MyCanvas();
String sStr="";
f.add("Center",mc);f.addWindowListener(new tt());
f.setSize(300,300);f.setVisible(true);
MyPoint p1=new MyPoint(100,100);
MyCircle c1=new MyCircle(100,100,30);
mc.addPoint(p1);mc.addCircle(c1);
p1.show();c1.show();
mc.repaint();
try
{
InputStreamReader ir=new InputStreamReader(System.in);
LineNumberReader inReader=new LineNumberReader(ir);
System.out.println("Please Input ENTER 3 times");
sStr=inReader.readLine();
c1.set_color(Color.blue);c1.move_to(200,50);
mc.repaint();
sStr=inReader.readLine();
c1.set_color(Color.orange);
c1.expand(30);
mc.repaint();
sStr=inReader.readLine();
c1.set_color(Color.pink);
c1.contract(40);mc.repaint();
}
catch(IOException e)
{
System.out.println("Error");System.exit(0);
}
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowActivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowOpened(WindowEvent e) { }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -