内部类如何调用外部类的repaint方法

我的外部类是一个JFrame的子类,内部类是一个线程,想在线程中使外部类的JFrame重绘,直接调用repaint方法可以吗?不可以的话,怎么做?不要在线程中创建外部类对... 我的外部类是一个JFrame的子类,内部类是一个线程,想在线程中使外部类的JFrame重绘,直接调用repaint方法可以吗?不可以的话,怎么做?
不要在线程中创建外部类对象,那样会把整个程序搞混乱。
展开
 我来答
紫薇参星
科技发烧友

2017-04-14 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3570万
展开全部

直接调用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();
 }
}

运行结果

松之song
2017-04-14 · TA获得超过446个赞
知道小有建树答主
回答量:489
采纳率:50%
帮助的人:356万
展开全部
持有外部类的引用,调用方法就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式