一个APPLET,上面8*8布了64个jpanel,每个jpanel的颜色是黑红错开的。
上面说的已经建好了,现在,我想在任一个jpanel上面画个实心圆出来,应该怎么做啊求教高手啊~~~~~
上面说的已经建好了,现在,我想在任一个jpanel上面画个实心圆出来,应该怎么做啊求教高手啊~~~~~
解决方案 »
- java数组问题 请高手指点(思路+代码)
- java 抓网页,html框架中的内容抓不到
- 关于Java文件传输
- 在学StringBuffer时候里面有说,只要将连接运算符+与字符串一起使用,就会自动创建StringBuffer对象是什么意思,能给举个例子吗
- 为什么《The Java Programming Language》的地位不如《Core Java》?!
- java socket 长连接
- 请教大侠,JAVA中如何实现A类调用B类中的main方法
- 请教,我该学什么?
- [求助]我的一个窗口类的窗口编辑器怎么没有了???
- Exception in thread "main" java.lang.NoClassDefFoundError:d:\java\helloworld是怎么回事
- 要写一个treeview,使每个节点要有双击事件,要怎么实现????
- 请帮忙看一下哪里出错了
如jp.add(e)?
public void paint(Graphics g) {
g.drawPolyline(int [] x, int [] y ,int pointNum);
}利用楼上的Ellipse2D e = new Ellipse2D.Double(150, 200, 100, 50);,然后分别算出这个圆经过的点,一般60份差不多,也就是61个点,第一个和最后一个重合,利用上面的方法,但是好像上面的方法你需要改进一下,因为它的参数是int的,而算出来的则不可能是整形的,如果你需要很精确,可以取原上的更多的点。
你还可以考虑用drawArc来画,可是这个方法中我不懂其中的一个参数的意思。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class CircumCircle { public static void main(String[] args) {
new JFCir().show();
}
}
class JPCir extends JPanel
{
long diameter,x1,x2,y1,y2,cX,cY,radious;
long startX,startY;
public JPCir()
{
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent m)
{
x1=m.getX();
y1=m.getY();
//System.out.println(x1+","+y1);
}
public void mouseReleased(MouseEvent m)
{
x2=m.getX();
y2=m.getY();
diameter=Math.round(Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2)));
cX=Math.abs(x2-x1);
cY=Math.abs(y2-y1);
radious=diameter/2;
startX=cX-radious;
startY=cY-radious;
//System.out.println(x2+","+y2);
repaint();
}
}
);
}
public void paintComponent(Graphics g)
{
int x1,y1,x2,y2,startX,startY,diameter,cX,cY;
super.paintComponent(g);
g.setColor(Color.RED);
cX=(int)this.cX;
cY=(int)this.cY;
x1=(int)this.x1;
y1=(int)this.y1;
x2=(int)this.x2;
y2=(int)this.y2;
System.out.println(x1+","+y1);
startX=(int)this.startX;
startY=(int)this.startY;
diameter=(int)this.diameter;
g.drawLine(x1,y1,x2,y2);
g.setColor(new Color(255,0,255));
g.drawRect(startX,startY,diameter,diameter);
g.setColor(Color.GREEN);
g.drawOval(startX,startY/2,diameter,diameter);
g.setFont(new Font("黑体",Font.BOLD,15));
g.setColor(Color.BLACK);
g.drawString("O",cX,cY);
}
}
class JFCir extends JFrame
{
public JFCir()
{
setTitle("画圆和直线");
setSize(600,400);
//getComponent().add
getContentPane().add(new JPCir());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
画的圆没有填充不是实心圆,应该是:
g.setColor(Color.Green);
g.fillOval(startX,startY/2,diameter,diameter);