Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - problema metodo paintComponent()
Forum - Java - problema metodo paintComponent()

Avatar
goldegard (Normal User)
Newbie


Messaggi: 1
Iscritto: 14/01/2011

Segnala al moderatore
Postato alle 16:00
Venerdì, 14/01/2011
Salve sto imparando ad usare java e ho un problemino con il disegno di figure su un jPanel, in sostanza io vorrei creare un array di figure da poter visualizzare attraverso l'override del metodo paintComponent,
se nel metodo inserisco una per una tutte le istanze dell'array (g.draw(array[1]);g.draw(array[2])...) non ci sono problemi, mentre se sostituisco le chiamate con un'unico ciclo for non mi disegna niente.Qualcuno sa perchè?mi sfugge qualcosa a livello teorico?
Posto il codice:

Codice sorgente - presumibilmente Java

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.geom.*;
  4. import java.awt.Graphics2D;
  5. import java.util.LinkedList;
  6.  
  7. public class View {
  8.  
  9.         View(){
  10.                 JFrame frame = new JFrame();
  11.                 frame.setSize(500,500);
  12.                 frame.setVisible(true);
  13.                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14.                 PanPaint panel = new PanPaint();
  15.                 JMenuBar bar = new JMenuBar();
  16.                 JMenu file = new JMenu("File");
  17.                 JMenuItem nuovo = new JMenuItem("Nuovo");
  18.                 JMenuItem salva = new JMenuItem("Salva");
  19.                 JMenuItem apri = new JMenuItem("Apri");
  20.                 JMenu disegna = new JMenu("Figure");
  21.                 JMenuItem linea = new JMenuItem("Linea");
  22.                 JMenuItem rettangolo = new JMenuItem("Rettangolo");
  23.                 JMenuItem cerchio = new JMenuItem("Cerchio");
  24.                 frame.add(BorderLayout.NORTH, bar);
  25.                 bar.add(file);
  26.                 bar.add(disegna);
  27.                 file.add(nuovo);
  28.                 file.add(salva);
  29.                 file.add(apri);
  30.                 disegna.add(linea);
  31.                 disegna.add(rettangolo);
  32.                 disegna.add(cerchio);
  33.                 frame.add(BorderLayout.CENTER,panel);
  34.                
  35.         }
  36.         public static void main(String[] args){
  37.                 View view = new View();
  38.         }
  39. }
  40.  class PanPaint extends JPanel{
  41.         private static final long serialVersionUID = 1L;
  42.         Shape line = new Line2D.Double(0,0,50,50);
  43.         Shape[] shapes={line,new Line2D.Double(20,50,100,100)};
  44.        
  45.         PanPaint(){
  46.                
  47.         }
  48.         protected void paintComponent(Graphics g) {
  49.                 super.paintComponent(g);
  50.         Graphics2D g1 =(Graphics2D) g;
  51.         for(int i=0; i==shapes.length;i++){
  52.                 g1.draw(shapes[i]);
  53.         }
  54.     }
  55. }


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 14:48
Domenica, 16/01/2011
la condizione del ciclo è sbagliata


Codice sorgente - presumibilmente Plain Text

  1. for(int i=0; i<shapes.length;i++){
  2.                 g1.draw(shapes[i]);
  3.         }


Ultima modifica effettuata da lorenzo il 16/01/2011 alle 14:49
PM Quote