1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java [Desenhar Livros]

Discussão em 'Programação' iniciada por whizzfrapp, 28 de Abril de 2007. (Respostas: 0; Visualizações: 711)

  1. 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);
        }
    }
     

Partilhar esta Página