源码如下,我试了下在class ArcsPanel下申明的几个变量如果放到public void paintComponent(Graphics g)方法体里面就能显示,但是放在这个方法体外面就不给我显示图形..是为什么为么什么 为什么呢!
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawArcs extends JFrame{
DrawArcs(){
getContentPane().add(new ArcsPanel());
setTitle("Draw Arcs");
this.setSize(250,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
new DrawArcs();
}
}
class ArcsPanel extends JPanel{
int xcenter=getHeight()/2;
int ycenter=getWidth()/2;
int r=(int)(Math.min(getHeight(), getWidth())*0.4);
int x=xcenter-r;
int y=ycenter-r;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.cyan);
g.drawArc(x, y, 2*r, 2*r, 0, 60);
g.fillArc(x, y, 2*r,2*r, 0, 60);
g.fillArc(x, y, 2*r, 2*r, 90, 60);
g.fillArc(x, y, 2*r, 2*r, 180,60);
g.fillArc(x, y, 2*r, 2*r, 270, 60);
}
}
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawArcs extends JFrame{
DrawArcs(){
getContentPane().add(new ArcsPanel());
setTitle("Draw Arcs");
this.setSize(250,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
new DrawArcs();
}
}
class ArcsPanel extends JPanel{
int xcenter=getHeight()/2;
int ycenter=getWidth()/2;
int r=(int)(Math.min(getHeight(), getWidth())*0.4);
int x=xcenter-r;
int y=ycenter-r;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.cyan);
g.drawArc(x, y, 2*r, 2*r, 0, 60);
g.fillArc(x, y, 2*r,2*r, 0, 60);
g.fillArc(x, y, 2*r, 2*r, 90, 60);
g.fillArc(x, y, 2*r, 2*r, 180,60);
g.fillArc(x, y, 2*r, 2*r, 270, 60);
}
}
解决方案 »
- 关于Java音频播放器的问题,大家帮忙看看。
- junit 测试 这是什么错误啊
- 哪个版本的java 支持goto?
- boolean 所占字节数,如何证明?
- 我有一个interface,含有一个void的process()方法,如何在该方法中返回值而不用return方法,类似于回调函数
- 急急急:怎么new String(userName.getBytes("ISO-8859-1"),"GBK")).getBytes()反转回来?
- JAVA能拦包吗??就是类似于自动外挂挂机的那种.急急!!!!!!!
- 请问谁有《JBuilder开发人员指南》,发给我好吗
- 高手请进:JAVA中的“反射”是什么?
- java.io.FileNotFoundException
- float形的988871.00转成988,871.00的程序
- telnet返回字符如何控制?如何根据协议控制?谢谢
getContentPane().add(new ArcsPanel());
setTitle("Draw Arcs");
this.setSize(250,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
new DrawArcs();
}
}
class ArcsPanel extends JPanel{
int xcenter=getHeight()/2;
int ycenter=getWidth()/2;
int r=(int)(Math.min(getHeight(), getWidth())*0.4);
int x=xcenter-r;
int y=ycenter-r;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.cyan);
System.out.println("x:"+x+" y:"+y+" r"+r);
r = 5;
g.drawArc(100, 20, 2*r, 2*r, 0, 60);
g.fillArc(29, 20, 2*r,2*r, 0, 60);
g.fillArc(30, 20, 2*r, 2*r, 90, 60);
g.fillArc(40, 20, 2*r, 2*r, 180,60);
g.fillArc(50, 20, 2*r, 2*r, 270, 60);
}
}