Ciao a tutti, come posso realizzare un "scacchiera" 10*10 , le cui celle sono dei JButton?
ideee..?
Ciao a tutti, come posso realizzare un "scacchiera" 10*10 , le cui celle sono dei JButton?
ideee..?
-------------------------------------------------
Il fumo nuoce gravemente alla salute
ciao usefra.
tempo fa era uscita una discussione di questo tipo fatta da degno. mi sembra che su suo sito ci fossero degli esempi.
Crei un JPanel a cui assegni un GridLayout. Poi crei un array bidimensionale di JButton e con 2 cicli for li aggiungi alla scacchiera:
JPanel p = new JPanel();
p.setLayout(new GridLayout(10,10));
JButton[][] b = new JButton[10][10];
for (int i = 0; i<10; i++) {
for(int j = 0; j<10; j++) {
k = j + 10*i;
JButton[j][i] = new JButton("Pulsante num. " + k);
p.add(JButton[j][i]);
}
}
Originariamente inviato da pgm
ciao usefra.
tempo fa era uscita una discussione di questo tipo fatta da degno. mi sembra che su suo sito ci fossero degli esempi.
Ciao pgm, ok guarderò!
-------------------------------------------------
Il fumo nuoce gravemente alla salute
CiaoOriginariamente inviato da battlehorse
Crei un JPanel a cui assegni un GridLayout. Poi crei un array bidimensionale di JButton e con 2 cicli for li aggiungi alla scacchiera:
JPanel p = new JPanel();
p.setLayout(new GridLayout(10,10));
JButton[][] b = new JButton[10][10];
for (int i = 0; i<10; i++) {
for(int j = 0; j<10; j++) {
k = j + 10*i;
JButton[j][i] = new JButton("Pulsante num. " + k);
p.add(JButton[j][i]);
}
}
ho aggiunto la variabile k dichiarandola, solo che in fase di compilazione mi da l'errore tipo che non riesce a risolvere la variabile JButton...
-------------------------------------------------
Il fumo nuoce gravemente alla salute
ho risolto così:
codice:JPanel p = new JPanel(); int k=0; p.setLayout(new GridLayout(10,10)); JButton b[][] = new JButton[10][10]; for (int i = 0; i<10; i++) { for(int j = 0; j<10; j++) { k = j + 10*i; b[j][i] = new JButton("Num:" + k); p.add(b[j][i]); } }
grazie alla prossima
-------------------------------------------------
Il fumo nuoce gravemente alla salute
Sentite... come faccio a dare un ActionEvent differente per ogni JButton creato?
-------------------------------------------------
Il fumo nuoce gravemente alla salute
Si, hai ragione. Quando ho scritto il codice dovevo essere rapito da un alieno. E' evidente che la riga corretta era
e nonp.add(b([j][i]);
Per quanto riguarda l'ActionEvent, immagino che tu intenda un ActionListener. Secondo me ti conviene associare un ActionListener comune a tutti che distingue tra i vari JButton, altrimenti dovresti creare 100 oggetti ActionListener quando ne basta uno solo...p.add(JButton([j][i]));
Puoi fare una cosa del tipo :
e aggiungere fuori da ciclo for del codice precendentecodice:public class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent ae) { JButton selected = (JButton) ae.getSource(); // ora selected contiene il JButton che stato selezionato. Per // ogni JButton puoi fare quello che ti serve. Ad esempio: if (selected = b[0][0]) { System.out.println("Hai premuto il bottone 0,0"); else if (selected = b[0][1]) { System.out.println("Premi di nuovo questo bottone e formatto tutto!"); } // ecc... ecc... } }
e dentro al ciclocodice:ActionListener myone = new MyActionListener();
Come ti sembra ?codice:b.addActionListener(myone);
ok...
io avevo provato una soluzione di questo tipo:
comunque anche la tua è validacodice:b[j][i].addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("N0")) { System.out.println("N0");} } );
-------------------------------------------------
Il fumo nuoce gravemente alla salute
Il tuo metodo é corretto, ma non crea 100 classi anonime una per ogni bottone?
Non che abbia provato direttamente, ma penso che a livello di carico di lavoro per la jvm non sia una soluzione ottimale.