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.