Io ho la classe Panel, cosi' definita:
codice:
public class Panel extends JPanel {
DrawPanel drwPanel; //Pannello in cui andro' a disegnare
CommandPanel cmdPanel; //Pannello in cui metto i vari pulsanti
Panel() {
cmdPanel = new CommandPanel(); //Istanzio il pannello dei comandi
drwPanel = new DrawPanel(); //Istanzio il pannello per disegnarci sopra
cmdPanel.setDrawPanel(drwPanel); //Collego i due pannelli
drwPanel.setCommandPanel(cmdPanel); //Come il commento precedente
this.setLayout(new BorderLayout()); //Imposto il layout e le posizioni dei
pannelli
this.add(drwPanel, BorderLayout.CENTER);
this.add(cmdPanel, BorderLayout.SOUTH);
}
drawpanel.setFigure(); //Metodo per istanziare i due rettangoli
}
la calsse DrawPanel, contenente la paintComponent e il metodo per istanziare i due rettangoli
codice:
public class DrawPanel extends JPanel implements MouseListener{
CommandPanel cmdPanel;
int x;
int y;
LinkedList <Figure>lista; //Lista che conterra' i due rettangoli
DrawPanel() {
lista = new LinkedList();
this.addMouseListener(this);
this.setVisible(true);
}
public void setCommandPanel (CommandPanel cmdPanel) {
this.cmdPanel = cmdPanel;
}
public void setFigure() {
int dimX = Integer.parseInt(this.cmdPanel.panelbX.getText()); //Leggo la
dimensione di un
lato del rettangolo
da un campo di
testo
int dimY = Integer.parseInt(this.cmdPanel.panelbY.getText()); //Come sopra
Figure f1 = new Figure("f1", 0, 0, dimX, dimY, Color.blue); //Istanzio la prima
figura e la metto
nella lista
this.lista.add(f1);
dimX = Integer.parseInt(this.cmdPanel.panelgX.getText()); //Rifaccio quanto
fatto sopra per la
seconda figura
dimY = Integer.parseInt(this.cmdPanel.panelgY.getText());
int width = this.getWidth(); //Poiche' la seconda figura deve essere
posizionata nell'angolo in basso a dx mi
calcolo la dimensione del pannello
int height = this.getHeight();
//Le due operazioni qui sopra mi restituiscono height = 0,
width = 0
Figure f2 = new Figure("f2", (width-dimX), (height-dimY), dimX, dimY, Color.yellow);
this.lista.add(f2);
repaint();
}
@Override
public void mouseClicked(MouseEvent me) {
}
@Override
public void mousePressed(MouseEvent me) {}
@Override
public void mouseReleased(MouseEvent me) {}
@Override
public void mouseEntered(MouseEvent me) {}
@Override
public void mouseExited(MouseEvent me) {}
@Override
protected void paintComponent(Graphics g) {
int Width = getSize().width;
int Height = getSize().height;
g.setColor(Color.white);
g.fillRect(0, 0, Width, Height);
if(this.lista.isEmpty()) {
return;
}
else {
Iterator i = this.lista.iterator();
while(i.hasNext()) {
Figure f = (Figure)i.next();
g.setColor(f.Color);
g.fillRect(f.X, f.Y, f.dimX, f.dimY);
}
}
}
}
//Le due operazioni qui sopra mi restituiscono height = 0, width = 0
Perche' ???