我想在paint()函数之外声明并初始化这个数组

时间:2014-08-08 12:41:39

标签: java paint declaration repaint

我的程序在屏幕上绘制了50个矩形条。我使用另一个类Bar初始化条形对象。一切都运行良好,但我需要一种方法来声明和初始化main方法中的bar对象。我试图在main方法中声明和初始化,但我无法将参数传递给paint(Graphics g)方法。我怎么能这样做,所以我的paint()函数没有做所有的工作?

我目前的代码:

import java.util.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;

public class test extends JFrame{

    public test(){
        setSize(1000,700);
        setVisible(true);
    }
    public void main(String args[]){
            repaint();
    }
    public void paint(Graphics g){
        Bar bar[] = new Bar[50];                  //declare object array
        int y = 0;

        for(int x = 0; x < 50; x++){             //initialize 50 bar objects
            bar[x] = new Bar(5,y,15,5);
            y += 6;       
        }    

        for(int x = 0; x < 50; x++){               //draw each bar object
           int height = bar[x].getHeight();
           int width = bar[x].getWidth();
           int locx = bar[x].getLocx();
           int locy = bar[x].getLocy();
           g.fillRect(locx,locy,width,height);             
        }
    }
}

1 个答案:

答案 0 :(得分:2)

将其存储为类成员

public class test extends JFrame{
  Bar bar[] = new Bar[50];

在主

中设置
public void main(String args[]){
  bar[1] = new Bar();
}

然后在paint()

中访问它
public void paint(Graphics g){
  bar[1].doSomething()

但是你应该在EDT上运行GUI调用,以避免同步问题。即两个单独的东西不要重新粉刷。