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(1208012028); // 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(100100800650); //dim frame
        
setVisible(true); // x rendere visibile il frame(di default non lo è)
    
}
    public 
void actionPerformedActionEvent 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 0xMaxi++){
                 for (
int j 0yMaxj++){
                        
button_scacchiera[i][j] = new JButton("");                                                
                        
button_scacchiera[i][j].setBounds(10 + (j*dimCasella) , 120 + (i*dimCasella), dimCaselladimCasella);                                                    
                        
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 0xMaxx++){
                for (
int y 0yMaxy++){
                    if (
target == button_scacchiera[x][y]){
                        
System.out.println("bottone" Integer.toString(x) + "  "Integer.toString(y));                    
                    }
                }
            }
    }
    public static 
void mainString [] args ){        
        new 
provaArrayPulsanti"Scacchiera" ).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }