定义画板为300*300,
点击鼠标,生成随机直径画一个圆
为了能显示完整的圆,做了以下限制:
private void drawingPanelClick(MouseEvent event)
{
//set an random number 25~199 as the diameter
diameter = getRandomDiameter();
localX = event.getX();
localY = event.getY();
//if width > current space set diameter= current space
if((300-localX) < diameter)
diameter = (300 - localX);
//if height> current space set diameter=current space
if((300 - localY) < diameter)
diameter = (300 - localY);
repaint();
}
然后调用画圆函数
public void paintComponent(Graphics g)
{
g.setColor(Color.BLUE);
g.drawOval(localX,localY,diameter,diameter);
}
可运行程序后,还是有不能完全显示的圆,不知是怎么回事,高人指点一下!!!!!!!!!
点击鼠标,生成随机直径画一个圆
为了能显示完整的圆,做了以下限制:
private void drawingPanelClick(MouseEvent event)
{
//set an random number 25~199 as the diameter
diameter = getRandomDiameter();
localX = event.getX();
localY = event.getY();
//if width > current space set diameter= current space
if((300-localX) < diameter)
diameter = (300 - localX);
//if height> current space set diameter=current space
if((300 - localY) < diameter)
diameter = (300 - localY);
repaint();
}
然后调用画圆函数
public void paintComponent(Graphics g)
{
g.setColor(Color.BLUE);
g.drawOval(localX,localY,diameter,diameter);
}
可运行程序后,还是有不能完全显示的圆,不知是怎么回事,高人指点一下!!!!!!!!!
这个函数中localX,localY,应该是要画的圆所在的矩形的左上角。
怎么会是圆心呢?
因为范围被你的两个if 限制了.做了个小测试.如下(包含注释)://<applet code=T width=300 height=300></applet>import java.applet.*;
import java.awt.*;
import java.awt.event.*;public class T extends Applet
{
private int localX,localY,diameter;
public void init()
{
setSize(300,300);
addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
localX = e.getX();
localY = e.getY();
diameter = (int)(Math.random()*200 + 25);
if ((300 - localX) < diameter)
diameter = 300 - localX;
if ((300 - localY) < diameter)
diameter = 300 - localY;
repaint();
}
});
}
public void paint(Graphics g)
{
g.setColor(Color.BLUE);
g.drawOval(localX,localY,diameter,diameter);
}
}运行:javac T.java -> appletviewer T.java 圆很正常
这里的长宽一定要大于或等于300(在appletviewer中测试则不需要)