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.
E a função desenha é a seguinte:
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--;
}
}
}
}
}
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);
}
}