Forumzone Community

Sistemi Operativi e applicazioni => Microsoft Windows e applicazioni => Programmazione => Discussione aperta da: JCreator87 il 12 Giugno 2009, 11:57:50

Titolo: Sto impazzendo con Java!!!
Inserito da: JCreator87 il 12 Giugno 2009, 11:57:50
Ciao a tutti, sono uno studente di ingegneria edile alle prese con un programma
d'esame in java.
Il problema che ho ora è la creazione di un oggetto (un'ellisse), la cui
dimensione Y è da stabilire in input dall'utente: tramite textField l'utente
inserisce il valore, viene trasformato da stringa ad intero (per mezzo del
listener) ed assegnato alla variabile h (q deriva da h): ora, il valore viene
accettato e trasformato, ma non mi viene disegnata l'ellisse. Allego parte del
listato, sperando che qualcuno mi spieghi l'errore che ho commesso... grazie in
anticipo....

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class shootingPanel extends JPanel{
   private Ellipse2D.Double hill;
   private JButton ok;
       private JTextField alt;
       private JLabel labelH;
       public int h;
       public int q;

   public shootingPanel(){
      this.setBackground(Color.CYAN);
      
      JPanel nord=new JPanel();
      nord.setPreferredSize(new Dimension(1000,100));
      nord.setBackground(Color.RED);
      this.add(nord);
      
      labelH=new JLabel("altezza della collina: " ;);
      nord.add(labelH);
      alt=new JTextField();
      nord.add(alt);
      alt.setPreferredSize(new Dimension(50,25));
      
      ok=new JButton("ok!" ;);
      nord.add(ok);
      
      nord.setVisible(true);
      
      class ListenerHill implements ActionListener {   
             public void actionPerformed(ActionEvent e){
                try {
                h=Integer.parseInt(alt.getText());
                q=550-h;
                System.out.println(h);
                System.out.println(q);                
                }
                catch(NumberFormatException g) {
                   ErrorFrame1 msg1=new ErrorFrame1();
                   msg1.setVisible(true);
                }
                
             }
      }
      ListenerHill l=new ListenerHill();
      ok.addActionListener(l);
      
      hill=new Ellipse2D.Double(350,q,300,h);
   }
       
       public void paintComponent(Graphics g){
             Graphics2D g2 = (Graphics2D)g;
             g2.setColor(Color.GREEN);
         g2.fill(hill);

      }
   
}
Titolo: Sto impazzendo con Java!!!
Inserito da: benna il 12 Giugno 2009, 14:29:09
Ciao e benvenuto,
Hai aggiunto l'ellisse al pannello?
Titolo: Sto impazzendo con Java!!!
Inserito da: JCreator87 il 12 Giugno 2009, 16:16:08
Ah...con nomepannello.add(ellisse)?  e dove dovrei metterlo, il comando?
(però scusa, non dovrebbe essere inutile addarlo al pannello? provando l'ellissi con valori fissi, appare comunque senza usare add...
Titolo: Sto impazzendo con Java!!!
Inserito da: benna il 15 Giugno 2009, 23:12:40
Esatto, prova ad aggiungerlo al pannello. Il comando mettilo subito dopo aver richiamato il costruttore di ellipse2d.
Controlla anche che le variabili q ed h siano riempite correttamente dal listener stampando il loro valore.
Per esser sicuro mettici alla fine anche una chiamata al metodo repaint.
Titolo: Sto impazzendo con Java!!!
Inserito da: JCreator87 il 16 Giugno 2009, 15:09:19
Uhm....l'ho fatto, ma il comando this.add(ellisse) mi restituisce l'eccezione "cannot find symbol method add(java.awt.geom.Ellipse2D.Double)" nonostante l'ellisse sia stata dichiarata.....
mmmh, intanto grazie comunque per l'aiuto datomi finora! :D
Titolo: Sto impazzendo con Java!!!
Inserito da: benna il 20 Giugno 2009, 17:14:06
Guarda se questa discussione (http://www.java-forums.org/java-awt/9350-how-draw-ellipse-java.html) può esserti d'aiuto