Quote Originariamente inviata da desiderio Visualizza il messaggio
ma se al posto di "CIAO" volessi stampare una variabile (es. che si chiama VL) di un altro metodo del pulsante "OK"
Come posso fare?
Che vuol dire "di un altro metodo"?

Invece che:
TNRicalcolo.STAMPA_ricalcolo.setText("CIAO");

nessuno ti vieta di passare una variabile:
TNRicalcolo.STAMPA_ricalcolo.setText(varStr);

Ma è chiaro che varStr deve essere una variabile che esiste da qualche parte e che è visibile/accessibile dal punto in cui la usi.
Se non lo è .... è chiaro che non la puoi usare.

Quote Originariamente inviata da desiderio Visualizza il messaggio
Accessibile dall'esterno cosa può provacare di errato?
Che la tua classe non ha controllo su chi/dove/come usa la variabile di istanza public e non puoi quindi imporre dei controlli sui valori, quelli che si definiscono in generale "invarianti".

Immagina una classe Range (di interi) con due variabili di istanza min e max. Noi vogliano che max sia sempre maggiore/uguale a min, mai inferiore. Se i campi fossero pubblici, l'accesso a queste variabile sarebbe sparpagliato in chissà quanti punti e la tua classe Range NON ne avrebbe il controllo.

Se invece li tieni privati e metti dei metodi "accessori" (getter e setter), puoi fare:

codice:
public class Range {
    private int min;
    private int max;

    public int getMin() {
        return min;
    }

    public void setMin(int min) {
        if (min > max) {
            throw new IllegalArgumentException("min non può essere superiore a max");
        }

        this.min = min;
    }

    public int getMax() {
        return max;
    }

    public void setMax(int max) {
        if (max < min) {
            throw new IllegalArgumentException("max non può essere inferiore a min");
        }

        this.max = max;
    }
}

A parte truschini con la reflection di Java, non c'è modo di accedere direttamente ai campi min/max, bisogna sempre passare per i metodi setMin/setMax e questo ti permette di mantenere il controllo sull'invariante "max deve essere maggiore/uguale a min".
Chi usa normalmente la classe Range, quindi NON può violare questo invariante.