Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    java come comunicano i metodi?

    ciao raga..

    nel mio programmino (studio) creo un semplice form (jframe) poi una array di bottoni (jbutton)
    tutto e ok se tengo tutto tra {}, ma se creo due metodi della classe uno per il frame uno per i bottoni no , non so come fare ad attaccare i bottoni al jframe

  2. #2
    Utente bannato
    Registrato dal
    Dec 2008
    Messaggi
    64
    ciao non so un super esperto ma cmq non puoi attacare i bottoni al frame devi farti dare il contentpane dal frame esempio

    JPanel panello=(JPanel)this.getContentpane();

    poi vai a mettere i bottoni sul panello

    panello.add(bottone);

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: java come comunicano i metodi?

    Originariamente inviato da metalsalvax
    ciao raga..

    nel mio programmino (studio) creo un semplice form (jframe) poi una array di bottoni (jbutton)
    tutto e ok se tengo tutto tra {}, ma se creo due metodi della classe uno per il frame uno per i bottoni no , non so come fare ad attaccare i bottoni al jframe
    E noi cosa dovremmo capire da questa cosa?

    Cosa vuol dire "se tengo tutto tra {}"? In Java qualunque cosa va messa dentro a due graffe, siano al massimo quelle che delimitano la classe...

    Posta il codice (all'interno dei tag CODE, come espressamente richiesto dal http://forum.html.it/forum/showthread.php?s=&threadid=973889]Regolamento interno[/url]) e specifica quali errori ottieni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    ciao e grazie per l'interesse,
    ma io non ho un problema legato nell inserire i bottoni al jframe quando questo fa parte tutto dello stesso metodo della classe ,il problema esiste quando creo due metodi nella stessa classe,uno x jframe ,uno x i bottoni.

  5. #5
    x Lelef

    allora uno calmati .
    due prima di farti grande ,chiedi perche non ho usato il code :
    guarda un po perche!!

    codice:
    package cerea_oggetti; import javax.swing.JFrame; import javax.swing.JButton; /** * * @author salvax */ public class Cerea_oggetti { public static void bott(){ JButton bottoni[] = new JButton[10]; int giro=1; String nome[]= new String[10]; String indice[] = new String[10]; for(int x=0;x<bottoni.length;x++){ giro = +50 ; indice[x]= Integer.toString(x); bottoni[x] = new JButton(); bottoni[x].setSize(50,50); bottoni[x].setLocation(10+giro, 20); bottoni[x].setVisible(true); bottoni[x].setName(indice[x]); } } public static void set(){ JFrame corpo = new JFrame(); corpo.setLayout(null); corpo.setName("1"); corpo.setTitle("primo progetto reload"); corpo.setVisible(true); corpo.setSize(200, 200); corpo.setLocation(400, 200); } /** * @param args the command line arguments */ public static void main(String[] args) { bott(); set(); } }
    il regolamento lo stralettooooo.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da metalsalvax
    x Lelef

    allora uno calmati .
    due prima di farti grande ,chiedi perche non ho usato il code :
    guarda un po perche!!

    codice:
    package cerea_oggetti; import javax.swing.JFrame; import javax.swing.JButton; /** * * @author salvax */ public class Cerea_oggetti { public static void bott(){ JButton bottoni[] = new JButton[10]; int giro=1; String nome[]= new String[10]; String indice[] = new String[10]; for(int x=0;x<bottoni.length;x++){ giro = +50 ; indice[x]= Integer.toString(x); bottoni[x] = new JButton(); bottoni[x].setSize(50,50); bottoni[x].setLocation(10+giro, 20); bottoni[x].setVisible(true); bottoni[x].setName(indice[x]); } } public static void set(){ JFrame corpo = new JFrame(); corpo.setLayout(null); corpo.setName("1"); corpo.setTitle("primo progetto reload"); corpo.setVisible(true); corpo.setSize(200, 200); corpo.setLocation(400, 200); } /** * @param args the command line arguments */ public static void main(String[] args) { bott(); set(); } }
    il regolamento lo stralettooooo.
    1) Io sono calmissimo... non sopporto che si chieda aiuto senza fornire il materiale su cui dare l'aiuto.
    2) Non ho fatto il grande, ho solo riportato quanto scritto nel regolamento (sono moderatore, è mio compito, se permetti).
    3) Se non sai fare copia/incolla, non ne ha colpa il forum. Quello che ottini capita per due ragioni: o hai incollato tutto il codice nella finestra di popup (da usarsi solo per una sola riga di codice), oppure hai incollato da un editor che usa solo il line feed per la fine linea.

    Prendi il codice, incollalo nel Blocco note di Windows, poi ricopialo e incollalo nella casella di testo del messaggio all'interno dei tag CODE (non usare il pulsante CODE e incollarlo nella finestrella di popup). Tutto questo è scritto all'interno del regolamento che tu hai straletto. E non è una cosa difficile da fare... ci riescono tutti.

    codice:
    package cerea_oggetti;
    import javax.swing.JFrame;
    import javax.swing.JButton;
    
    /** * * @author salvax */
    
    public class Cerea_oggetti {
       public static void bott(){
          JButton bottoni[] = new JButton[10];
          int giro=1;
          String nome[]= new String[10];
          String indice[] = new String[10];
          for(int x=0;x<bottoni.length;x++){
             giro = +50 ;
             indice[x]= Integer.toString(x);
             bottoni[x] = new JButton();
             bottoni[x].setSize(50,50);
             bottoni[x].setLocation(10+giro, 20);
             bottoni[x].setVisible(true);
             bottoni[x].setName(indice[x]);
          }
       }
    
       public static void set(){
          JFrame corpo = new JFrame();
          corpo.setLayout(null);
          corpo.setName("1");
          corpo.setTitle("primo progetto reload");
          corpo.setVisible(true);
          corpo.setSize(200, 200);
          corpo.setLocation(400, 200);
        }
    
        /** * @param args the command line arguments */
       public static void main(String[] args) {
          bott();
          set();
       }
    }
    Visto?

    Giusto per rendere più facile la comprensione:

    [CODE]
    Qui tutto il codice, indentato come si deve
    [/CODE]


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    ok non lo avevo intuito,ho fatto come mi ai detto e funziona finalmente
    credimi stressava anche me il fatto di non poter dare dettagli approfonditi,in modo da essere chiaramente capito .

    grazie Lelef ciao

    potrei anche chiedervi adesso se la mia domanda e chiara e lecita ,cioe vi chiara la situazione ed e possibile far questo, oppure sono sulla strada sbagliata?
    grazie a tutti

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il problema è che prima richiami bott(), che crea correttamente i pulsanti e li "posiziona", poi chiami set() che crea la finestra. Ma non aggiungi mai da nessuna parte i pulsanti alla finestra, tramite il metodo add() del contentPane().

    Quindi, va bene creare i pulsanti, va bene creare la finestra, ma il passo successivo dovrebbe essere quello di aggiungere i pulsanti alla finestra, possibilmente prima di effettuare il setVisible( true ) della finestra stessa.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    ciao grazie ,e chiaro quello che mi hai detto
    il metodo add() non so dove collocarlo ,seplicemente perche
    subito dopo aver creato i bottoni, l'oggetto corpo non e visibile
    all'interno di bott() <-costrutore in pratica non so come rendere
    Public corpo ,cioe visibile in tutti i metodi della sua classe.(penso?)
    grazie per avermi risposto ciao.

  10. #10
    Originariamente inviato da metalsalvax
    ciao grazie ,e chiaro quello che mi hai detto
    il metodo add() non so dove collocarlo ,seplicemente perche
    subito dopo aver creato i bottoni, l'oggetto corpo non e visibile
    all'interno di bott() <-costrutore in pratica non so come rendere
    Public corpo ,cioe visibile in tutti i metodi della sua classe.(penso?)
    grazie per avermi risposto ciao.
    Una soluzione potrebbe essere la seguente:

    codice:
    package cerea_oggetti;
    import javax.swing.JFrame;
    import javax.swing.JButton;
    
    /** * * @author salvax */
    
    public class Cerea_oggetti {
         private JFrame corpo = new JFrame();
       public static void bott(){
          JButton bottoni[] = new JButton[10];
          int giro=1;
          String nome[]= new String[10];
          String indice[] = new String[10];
          for(int x=0;x<bottoni.length;x++){
             giro = +50 ;
             indice[x]= Integer.toString(x);
             bottoni[x] = new JButton();
             bottoni[x].setSize(50,50);
             bottoni[x].setLocation(10+giro, 20);
             bottoni[x].setVisible(true);
             bottoni[x].setName(indice[x]);
          }
       }
    
       public static void set(){
          corpo.setLayout(null);
          corpo.setName("1");
          corpo.setTitle("primo progetto reload");
          corpo.setVisible(true);
          corpo.setSize(200, 200);
          corpo.setLocation(400, 200);
        }
    
        /** * @param args the command line arguments */
       public static void main(String[] args) {
          bott();
          set();
       }
    }
    Ovvero una classe è composta da metodi, ovvero i tuoi set(), bott() ecc, e dagli attributi.
    Gli attributi non sono altro che riferimenti ad oggetti o al più variabili di tipo primitivo (interi o altro) dichiarati nella classe ma al di fuori di ogni metodo. Così facendo sono visibili in tutti i metodi.

    La parola chiave "private" fa si che comunque il riferimento all'oggetto istanza di JFrame sia visibile solo all'interno della tua classe e non da altre classi, garantendo quindi un buon grado di protezione.

    Ovviamente adesso che il tuo JFrame è visibile in tutti i metodi devi applicare le modifiche di cui avevi bisogno (mi sono limitato a mostrarti come far vedere a tutti i metodi il JFrame).


    Dimenticavo inoltre di dirti che bott() non è il costruttore. Il costruttore ha lo stesso nome della classe e non ritorna nulla (non ha nemmeno bisogno di specificare il void).
    Un implementazione più pulita del tuo codice sarebbe quella di:

    - rinominare
    codice:
    public static void bott()
    in
    codice:
    public Cerea_oggetti()
    Eventualmente eliminarie tutte le diciture Static se non ti sono realmente utili e quindi richiamare nel main semplicemente un
    codice:
    Cerea_oggetti nomedatescelto = new Cerea_oggetti();
    questo comando ti richiamerebbe in automatico il costruttore e successivamente dovresti richiamare solo il metodo set su nomedatescelto in questo modo:
    codice:
    nomedatescelto.set();

    Un ultima cosa se vuoi un consiglio ti conviene cercare una guida ben fatta sull'argomento da seguire, perchè ti mancano veramente le basi e Java può essere un linguaggio assai difficile se non studiato ben benino.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.