Java [Desenhar Livros]

whizzfrapp

Membro
Boa tarde. Tenho este código e supostamente quero desenhar rectângulos de acordo com o que está numa matriz. Mas não sei que componente do Swing usar nem como.

Código:
private class ArrangeListener implements ActionListener 
    {
        
        public void actionPerformed(ActionEvent arg0) 
        {
            if(ficheiro==null)
            {
                JOptionPane.showMessageDialog(frame, "Nenhum ficheiro foi carregado!", "Erro!", JOptionPane.WARNING_MESSAGE);
                return;
            }
            else
            {
                int i=0, j, posicao=0, offset=0, liv_por_prat=0, altura=0;
                
                altura_prateleiras = new int[10];
                
                matriz = new Livro[10][p.altura];
                
                for(j=0; j < array_livros.size()-1;j++)
                {
                    if(numero_livros_lidos==0)
                    {
                        frame.getContentPane().add(new Desenha(matriz, altura_prateleiras, 10, p.comprimento));
                        repaint();
                    }
                    if (((p.comprimento - posicao) >= ((Livro) array_livros.get(j)).espessura) && (p.altura >= ((Livro) array_livros.get(j)).altura))
                    {
                        matriz[i][posicao]=(Livro) array_livros.get(j);
                        liv_por_prat++;
                        numero_livros_lidos--;
                        posicao += ((Livro) array_livros.get(j)).espessura;
                    }
                    
                    else
                    {
                        for (int k = offset;k < (offset + liv_por_prat); k++)
                        {
                            if (((Livro) array_livros.get(k)).altura > ((Livro) array_livros.get(k++)).altura)
                            {
                                altura = ((Livro) array_livros.get(k)).altura;    
                            }
                            else
                            {
                                altura = ((Livro) array_livros.get(k++)).altura;
                            }
                        }
                        offset = offset + liv_por_prat;
                        liv_por_prat =0;
                        posicao = 0;
                        i++;
                        altura_prateleiras[i]= altura;
                        j--;
                        
                    }
                }
            }
            
        }
    }
E a função desenha é a seguinte:

Código:
public class Desenha extends JPanel
{
    Livro matrix [][];
    int valores [];
    int y=0;
    int x=0;
    int num_prat;
    int comp_prat;
    int num_livros_lidos;
    
    public Desenha(Livro m [][], int v [], int n, int c)
    {
        this.matrix = m;
        this.valores = v;
        this.num_prat=n;
        this.comp_prat=c;
    }
    
    void pint(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
        y=0;
        x=0;
        Rectangle2D r;
        int i, j;
        
        for(i=0; i<num_prat; i++)
        {
            y=valores[i]+(i*10);
            for(j=0; j<comp_prat; j++)
            {
                r = new Rectangle2D.Double(15, y, matrix[i][x].espessura, matrix[i][x].altura);
                g2.setPaint(Color.red);
                x+=matrix[i][x].espessura;
                g2.fill(r);
            }
        }
        g2.drawLine(35, 20, 300, 30);
    }
}
 
Back
Topo