Sto impazzendo con Java!!!

Aperto da JCreator87, 12 Giugno 2009, 11:57:50

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

JCreator87

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);

      }
   
}

benna

Ciao e benvenuto,
Hai aggiunto l'ellisse al pannello?

JCreator87

#2
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...

benna

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.

JCreator87

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

benna