Ok adesso ho 1 altro problema: sempre partendo dal discorso di prima, ho fatto 1 pulsante che
invece di crearne uno solo crea un array bidimensionale di pulsanti. Il comportamento è decisaente strano, forse dipende dalla mia poca conoscenza del metodo repaint().
Cmq qui il pulsante button_restart, quando premuto, disegna una serie di caselle. Ognuna di queste caselle, se premute restituisce il suo text (che è poi la sua posizione nell'array).
Il tutto funziona correttamente la prima volta, ma dalla seconda si hanno delle anomalie che non riesco a comprendere: in primo luogo l' array d pulsanti viene ridisegnato ma solo se grande uguale o più grande, se è più piccolo le caselle "extra" rimangono. In secondo luogo i pulsanti non funzionano più. Veramente non capisco dove sia l'errore e temo a questo punto sia nel mio modo di interpretare il JFrame.
Il codice è il seguente. Grazie in anticipo
Codice PHP:
public class provaArrayPulsanti extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
int dimCasella = 40; //25
int xMax = -10;
int yMax = -10;
// ////////////////////////////////////////////////////
// dichiarazione oggetti (pulsanti, label textfield,panel)
// ////////////////////////////////////////////////////
// button
JButton button_restart = new JButton("Nuova Partita");
JButton[][] button_scacchiera;//
//JTextField (per inserire valori x, y)
JTextField campoX = new JTextField();
JTextField campoY = new JTextField();
public provaArrayPulsanti(String titolo) { // viene visualizzato come titolo della
// finestra
super(titolo);// richiama il costruttore della superclasse Jframe
// passando come parametro la stringa da visualizzare
// sulla barra del titolo
getContentPane().setLayout(null);
button_restart.setBounds(120, 80, 120, 28); // setto la dimensionetext_P1.setBounds(60,26,60,40);
campoX.setBounds(20,40,40,40);
campoY.setBounds(20,100,40,40);
button_restart.addActionListener(this);//aggiungo il pulsante
getContentPane().add(campoX);
getContentPane().add(campoY);
System.out.println();
// ////////////////////////////////////////////////////
// metto quello che voglio sia disegnato nel jpanel
// ///////////////////////////////////////////////////
getContentPane().add(button_restart);
setResizable(false);
setBounds(100, 100, 800, 650); //dim frame
setVisible(true); // x rendere visibile il frame(di default non lo è)
}
public void actionPerformed( ActionEvent e){ //nella ver originale usato come tipo boolean
Object target = e.getSource();
if (target == button_restart){
xMax = Integer.parseInt(campoX.getText());
yMax = Integer.parseInt(campoY.getText());
button_scacchiera = new JButton[xMax][yMax];
for (int i = 0; i < xMax; i++){
for (int j = 0; j < yMax; j++){
button_scacchiera[i][j] = new JButton("");
button_scacchiera[i][j].setBounds(10 + (j*dimCasella) , 120 + (i*dimCasella), dimCasella, dimCasella);
button_scacchiera[i][j].setMargin(new Insets(2,6,2,6));
button_scacchiera[i][j].setEnabled(true);
button_scacchiera[i][j].setText(Integer.toString(i)+ " "+ Integer.toString(i));
getContentPane().add(button_scacchiera[i][j]);
button_scacchiera[i][j].addActionListener(this);//aggiungo il pulsante
button_scacchiera[i][j].repaint();
}
}
}
for (int x = 0; x < xMax; x++){
for (int y = 0; y < yMax; y++){
if (target == button_scacchiera[x][y]){
System.out.println("bottone" + Integer.toString(x) + " "+ Integer.toString(y));
}
}
}
}
public static void main( String [] args ){
new provaArrayPulsanti( "Scacchiera" ).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}