内部类如何调用外部类的repaint方法
我的外部类是一个JFrame的子类,内部类是一个线程,想在线程中使外部类的JFrame重绘,直接调用repaint方法可以吗?不可以的话,怎么做?不要在线程中创建外部类对...
我的外部类是一个JFrame的子类,内部类是一个线程,想在线程中使外部类的JFrame重绘,直接调用repaint方法可以吗?不可以的话,怎么做?
不要在线程中创建外部类对象,那样会把整个程序搞混乱。 展开
不要在线程中创建外部类对象,那样会把整个程序搞混乱。 展开
2个回答
展开全部
直接调用repaint();就可以.我给你个例子,你看看吧.
这个例子是让画出的正方形每隔1秒变颜色的Java程序.
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class F1 extends JFrame{
Color[] colors = {Color.red,Color.orange,Color.yellow,Color.green,Color.cyan,Color.blue,Color.magenta,Color.black};
int i=0;
F1(){
setTitle("变色正方形");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public void paint(Graphics g){
g.setColor(colors[i]);
g.drawRect(100,100,200,200);
}
class T1 extends Thread{
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i<7)
i++;
else
i=0;
repaint();
}
}
}
public static void main(String[] args) {
F1 f=new F1();
Thread t=f.new T1();
t.start();
}
}
运行结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询