Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    array e java per un principiante

    Ciao a tutti,


    premetto che sono un principiante di java, e per questo sto seguendo un libro, in inglese, dal titolo abbastanza eloquente : javaforkids.


    Bene sto costruendo una calcolatrice, per imparare anche la classe swing, sono riuscito a crearla e a far apparire la finestra con questo codice.

    codice:
      
    
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class Calculator{
    	// dichiaro le variabili usate 
    		JPanel windowcontent;
    		JFormattedTextField testo;
    		JButton button0;
    		JButton button1;
    		JButton button2;
    		JButton button3;
    		JButton button4;
    		JButton button5;
    		JButton button6;
    		JButton button7;
    		JButton button8;
    		JButton button9;
    		JButton buttonpoint;
    		JButton buttonequal;
    		JButton buttonplus;
    		JButton buttonmeno;
    		JButton buttonper;
    		JPanel p1;
    		JPanel p2;
    		// creo il costruttore della classe
    		Calculator(){
             windowcontent = new JPanel();
             BorderLayout bl = new BorderLayout();
             windowcontent.setLayout(bl);
             
             testo = new JFormattedTextField(new Integer(0));
             testo.setHorizontalAlignment(testo.RIGHT);
             windowcontent.add("North", testo);
             
             button0 = new JButton("0");
             button1 = new JButton("1");
             button2 = new JButton("2");
             button3 = new JButton("3");
             button4 = new JButton("4");
             button5 = new JButton("5");
             button6 = new JButton("6");
             button7 = new JButton("7");
             button8 = new JButton("8");
             button9 = new JButton("9");
             buttonpoint = new JButton(".");
             buttonequal = new JButton("=");
             buttonplus = new JButton("+");
             buttonmeno = new JButton("-");
             buttonper = new JButton("*");
             p1 = new JPanel();
             GridLayout gl = new GridLayout(4,3);
             p1.setLayout(gl);
             
             p1.add(button0);
             p1.add(button1);
             p1.add(button2);
             p1.add(button3);
             p1.add(button4);
             p1.add(button5);
             p1.add(button6);
             p1.add(button7);
             p1.add(button8);
             p1.add(button9);
             p1.add(buttonpoint);
             p1.add(buttonequal);
             
             p2 = new JPanel();
             p2.setLayout(gl);
             p2.add(buttonplus);
             p2.add(buttonmeno);
             p2.add(buttonper);
             
             windowcontent.add("Center",p1);
             windowcontent.add("East",p2);
             JFrame frame = new JFrame("Calcolatrice");
             
             frame.setContentPane(windowcontent);
             frame.pack();
             frame.setVisible(true);
             
    		}
    	
    	
    	
    	public static void main(String[] args) {
    		// Avvio la calcolatrice
    
    		 
    		 Calculator calc = new Calculator();
    	}
    }
    ora in pratica dovrei ricreare la stessa situazione però usando un array, invece di dichiarare i buttons a uno ad uno, e naturalmente poi metterli in un loop, che sarebbe anche la procedura normale da usare.
    Pero qua mi sono impantanato, nel senso che ho provato varie soluzioni ma proprio non mi riesce, qualcuno gentilmente mi potrebbe aiutare, con questo codice a costruire l'array per i bottoni dal n0 al n9?

    Grazie.

    Abbiate pazienza, sono un newbie del linguaggio.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: array e java per un principiante

    Originariamente inviato da kaisersose
    con questo codice a costruire l'array per i bottoni dal n0 al n9?
    Parti da questo:

    codice:
    private JButton[] digitButtons;
    
    ...
    
    
    digitButtons = new JButton[10];
    
    for (int i = 0; i <= 9; i++) {
        digitButtons[i] = new JButton(String.valueOf(i));
        
        .... registra anche il listener per il pulsante i-esimo ....
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie 1000.

    Giusto per capire, il manuale mi chiedeva di partire da questo :
    codice:
    Buttons[] numButtons= new Buttons[10];
    non capisco il Buttons[], iniziale, cosa voglia significare, come mi hai spiegato tu ha funzionato alla perferzione quindi credo sia piu giusto come mi hai suggerito tu, tanto l'importante è raggiungere l'obbiettivo e capire come ci sono arrivato.
    Infatti voglio capire, per aggiungere il pulsante ho fatto lo stesso ciclo cosi :
    codice:
    for(int b = 0; b<= 9;b++){
     for(int b = 0; b<= 9;b++){
            	 p1.add(numbuttons[b]);
             }
    e funziona. Ricevo solo un warning su questo codice

    codice:
    testo.setHorizontalAlignment(testo.RIGHT);
    cioè:
    The static field SwingConstants.RIGHT should be accessed in a static way


    Mi potresti, gentilmente illuminare su questo warning? PLS.

    Grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da kaisersose
    il manuale mi chiedeva di partire da questo :
    codice:
    Buttons[] numButtons= new Buttons[10];
    non capisco il Buttons[], iniziale, cosa voglia significare
    Buttons (con la 's' finale)??? Potrei capire Button (che è di AWT) ma Buttons non ho idea di cosa voglia intendere quel manuale.

    Originariamente inviato da kaisersose
    codice:
    for(int b = 0; b<= 9;b++){
     for(int b = 0; b<= 9;b++){
            	 p1.add(numbuttons[ b]);
             }
    Perché un ciclo annidato nell'altro??

    Originariamente inviato da kaisersose
    codice:
    testo.setHorizontalAlignment(testo.RIGHT);
    cioè:
    The static field SwingConstants.RIGHT should be accessed in a static way
    I membri static sono associati alla classe, non ad una istanza specifica della classe. Tecnicamente non è sbagliato fare riferimento ad un membro static usando il reference ad un oggetto (il compilatore deduce la classe dal reference). Ma è più corretto (anche più pratico a livello "visivo") usare il nome della classe.

    RIGHT è una costante dichiarata nell'interfaccia SwingConstants (che è implementata da molti componenti Swing)
    Quindi è più corretto fare:

    SwingConstants.RIGHT
    o
    JFormattedTextField.RIGHT
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Il Buttons con la s finale credo sia un errore di stampa del manuale, avevo immaginato.


    Il ciclo non è annidato è un mio errore quando ho postato il codice.
    :P

    QUindi meglio usare direttamente JFormattedTextField.RIGHT, ho capito ora il perchè.

    Il manuale in questione è piu amatoriale diciamo, ma è un buon punto di partenza per uno come me che parte da 0 o quasi, conosco php ma java e un altro mondo.

    Grazie.

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.