有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing Java:在同一个JPanel上添加两个动画对象(paintComponent)

我有一个类,通过定时器重新绘制动画对象(类似蠕虫的动画)。 还有一个有我的框架和面板的类。 当我创建这个对象的2个(mov和mov2)实例并将其添加到面板中时,它们会出现在单独的面板中(或者看起来像)。这是密码

public class Movimento extends JComponent{
    int t;  
    int a;  
    int[][] matriz;

    public Movimento(int tamanho, int area){        
        t = tamanho;
        a = area;

        gerarMatriz();
        gerarPanel();

        ActionListener counter = new ActionListener() {
            public void actionPerformed(ActionEvent ev){
                movimentarMatriz();
                repaint();
            }
        };          
        new Timer(1, counter).start();
    }

    public void gerarPanel(){
        this.setPreferredSize(new Dimension(a, a));
    }   

    public void gerarMatriz(){
       /*
        *Generates an array[][] with initial coordinates
        */
    }

    public void movimentarMatriz(){
       /*
        * add a new coordinate to the last space of the array  
        */
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        for(int i = 0; i < matriz.length; i++){
            g.drawRect(matriz[i][0],matriz[i][1],1,1);
        }
    }

然后我在这里创建了新的Movimento对象

public class GeraImg{
    JFrame frame = new JFrame("Gera Imagem");
    JPanel panel = new JPanel();

    Movimento mov = new Movimento(1000,400);
    Movimento mov2 = new Movimento(100,400);

    public GeraImg(){
        fazerFrame();   
    }

    public void fazerFrame(){

        panel.setOpaque(true);
        panel.setBackground(new Color(150,200,20,255));
        panel.add(mov2);
        panel.add(mov);

        frame.add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args){
        new GeraImg();      
    }
}

然后我得到了两个并排的独立动画面板,而不是同一面板中的两个蠕虫

这个概念完全错了吗? 谢谢


共 (0) 个答案