Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    74

    Gestire dinamicamente un disegno

    Ciao a tutti ..

    Ho un programma che calcola Area e Perimetro (con 2 TextField) al click di un bottone apposito, con a sinistra la figura disegnata (per adesso statica).
    Quello che volevo farla è cambiarla dinamicamente, ovvero al click di un determinato bottone, le dimensione della figura variano quindi si ingradisce/rimpicciolisce .
    Quello che mi farebbe comodo, sarebbe un metodo che al click del bottone vada a verificare se c'è stato un cambiamento all'interno delle TextField (come può essere l'onChange in HTML, ma non istantaneo ma che avvenga al click del bottone) .
    Cercando su internet non ho trovato nessun metodo che permettesse cio (anche si mi fa un pò strano) allora ho pensato a 2 alternative nel caso non esistesse realmente .

    1) Dato che la figura è un oggetto creato da una classe esterna (a cui gli passo dei parametri) pensavo di cambiarli parametri, però anche facendo così la figura rimaneva uguale (dato che viene creata all'apertura del programma) .
    Allora un alternativa (un pochetto bruttina) se ce ne fosse l'esistenza di implementare ad una certa riga qualche istruzione (gestita sempre al click del bottone), cosìcche mi commenti la dichiarazione dell'oggetto e di crearne una all'evento del bottone, con i parametri aggiornati dall'utente (che avrà inserito valori nuovi all'interno della TextField) .
    Esiste un istruzione che permette di fare ciò ?

    2) Di eliminare l'oggetto corrente e di crearne uno nuovo all'interno della gestione del bottone ..

    Si,sopratutto la prima che è un pò squallida (se ne esistesse l'istruzione), non sono granchè, ma era qualche idea che mi è sbucata in testa ..

    Consigli?

    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da AleJAVA Visualizza il messaggio
    Quello che volevo farla è cambiarla dinamicamente, ovvero al click di un determinato bottone, le dimensione della figura variano quindi si ingradisce/rimpicciolisce .
    Quello che mi farebbe comodo, sarebbe un metodo che al click del bottone vada a verificare se c'è stato un cambiamento all'interno delle TextField (come può essere l'onChange in HTML, ma non istantaneo ma che avvenga al click del bottone) .
    A dire il vero, se il cambiamento avviene solo per via di un pulsante, non c'è bisogno di vedere se "qualcuno" ha modificato il testo nel textfield (cioè .. si può fare ma non è una cosa strettamente obbligatoria/necessaria). Prendi il testo nel textfield, convertilo nel tipo di dato necessario e aggiorna il disegno. Poi la logica di gestione del disegno dovrebbe essere un minimo furba nel fare il repaint del disegno solo se il valore è davvero cambiato.

    Per un disegno che cambia in base a componenti vedi il mio Regular Polygon.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    74
    Il disegno già com'è impostato cambia di per se, ma non cambia al cambiamento del valore delle TextField .
    A me interessava che al cambiamento dei valori presenti nelle TextField e al click del bottone, il disegno si ridimensionasse ..

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    74
    Ok, ho risolto

    Creando nella classe della gestione del bottone un vettore ad oggetti (della figura), prende l'oggetto attuale, lo inserisce nel vettore, incremento il vettore di una posizione e ci aggiungo un nuovo oggetto con il valore preso dalle TextField (passati come parametri) .
    Nascondo il primo (indice-1) e rendo visibile il secondo



    codice:
    /*
    Limitazioni gestione cambiamento della figura :
    Si può fare fino a 100 volte (grandezza del vettore dell'oggetto)
    
    
    Grandezze massime consentite : 250x250
    */
    
    
    
    
    
    
    
    
    
    
    import java.awt.*;
    import java.awt.event.*;
    
    
    
    
    public class btnCambia implements ActionListener {
    
    
         TextField txta;
         TextField txtb;
         rettangolo rett;
         double b,h;
         Panel panel2;
         rettangolo vetR[]=new rettangolo[100];
         int i=0;
    
    
         
        public btnCambia(TextField txtBase,TextField txtArea,rettangolo r,Panel p2) {
            txtb=txtBase;
            txta=txtArea;
            vetR[i]=r;
            panel2=p2;
        }
    
    
        public void actionPerformed(ActionEvent event) {
    
    
                
                i++;
                vetR[i]=new rettangolo(txtb,txta);  //aggiungo un nuovo oggetto rettangolo
                vetR[i-1].setVisible(false);              //rendo invisibile quello precedente
                vetR[i].setVisible(true);                 //rendo visibile quello appena creato
                vetR[i].setBounds(0,0,250,250);          //lo posiziono
                
                
                panel2.add(vetR[i]);
    
    
    
    
    
    
        }
        
    
    
    
    
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.