2013-04-02 3 views
-1

Je suis un débutant en Java. Je travaille sur une mission dans laquelle je lis les commandes du fichier et dessine les formes sur jpanel. le fichier est commefonction de peinture personnalisée en Java

FRAME 200 100  // open a frame, note: parser must ignore any comments 
    COLOR 255 0 0 // set color to red 
    RECTANGLE 20 30 40 20 // draw a red rectangle 
    COLOR 128 128 128 // set color to gray 
    CIRCLE 100 50 25 // draw a gray circle 
    FRAME 100 100 // open a second frame 
    COLOR 0 0 255 // set color to blue 
    ELLIPSE 50 50 30 20 // draw a blue ellipse 
    COLOR 0 255 0 // set color to green 
    LINE 10 20 90 80 // draw a green line 

j'ai écrit le code suivant.

JFrame frame = new JFrame("JFrame Source Demo"); 
frame.setTitle("Drawing Graphics in Frames"); 
frame.setBounds(100,50,500,300); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(true); 
/////////////////// 
    File file = new File("Paint_instruction.txt"); 
    // Get data from this file using a file reader. 
    FileReader fr = new FileReader(file); 
    // To store the contents read via File Reader 
    BufferedReader br = new BufferedReader(fr); 
    //writer to write in file 

    while((data = br.readLine()) != null) 
    { 
     /*String[] tokens = data.split("\\s{1,}"); 
      for(int i=0;i<tokens.length;i++) 
      {System.out.println(tokens[i]);}*/ 

     String []tokens = data.split("\\s{1,}"); 

      if(tokens[0].equals("FRAME")) 
      {JFrame frame2 = new JFrame("JFrame Source Demo"); 
      frame2.setBounds(0, 0, 40, 40); 
      frame2.setVisible(true); 


      } 
      else if(tokens[0].equals("RECTANGLE")) 
      { 
      //draw circle 
      } 
      else if(tokens[0].equals("CIRCLE")) 
      { 
       //draw circle 
      } 
      else if(tokens[0].equals("LINE")) 
      { 
       //draw Line 
      } 
      else if(tokens[0].equals("ELLIPSE")) 
      { 
       //draw ELLIPSE 
      } 

Je ne sais pas comment utiliser la fonction de peinture pour dessiner ces formes. J'ai essayé de passer le tableau à la fonction de peinture. Mais cela n'a pas fonctionné. Je l'ai gogglé mais je n'ai trouvé aucune aide appropriée

+0

Vous devriez essayer de faire votre tâche par vous-même. De cette façon, vous seriez beaucoup mieux. – skuntsel

+0

Je suggère que vous ne devriez pas lire un fichier dans n'importe quelle méthode de peinture, comme vous voulez que ceux-ci soient aussi rapides que vous pouvez le faire – MadProgrammer

Répondre

4

et de dessiner les formes sur jpanel.

Où est votre JPanel?

Je goggled, mais n'a pas trouvé une aide appropriée

Je trouve cela difficile à croire. Des liens vers le tutoriel Custom Painting sont trouvés partout sur ce forum et d'autres.

Il est plus difficile d'apprendre à peindre lorsque vous lisez des commandes à partir d'un fichier. Je vous suggère donc d'apprendre les bases de la peinture avant d'aborder la peinture à partir d'un fichier de commandes.

+1

Probablement ce que OP voulait dire, c'est que l'affectation n'a pas encore été affichée quelque part sur le net. – skuntsel

+0

@skuntsel, bon point :-) – camickr

1

Vous devez remplacer paintComponent méthode de JPanel et dans cette méthode tirer toutes ces formes en utilisant l'argument java.awt.Graphics passé dans la méthode paintComponent. Et ajoutez le JPanel au JFrame. Regardez le official tutorial for paint mechanism dans java