Sì, quando crei una classe xyz che gestisce dei dati e genera dei risultati, invece di mandare l'output a qualsivoglia dispositivo, fai restituire ai metodi appropriati il tipo di dato che ti interessa. In altre parole, banalmente

codice:
public class Persona {
  private String name, surname;
  private int age;

  public Persona (String name, String surname, int age) {
    this.name = name;
    this.surname = surname;
    this.age = age;
  }
  
  public Persona() {
    this("John", "Doe", 44);
  }

  public String getName() {
    return this.name;
  }

  public String getSurname() {
    return this.surname;
  }

  public int getAge() {
    return this.age;
  }

  public void setName(String name) {
    this.name = name;
  }

  public void setSurname(String surname) {
    this.surname = surname;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public String toString() {
    return (this.name + " "+ this.surname + " " +this.age);
  }
}
come vedi in questa classe non c'è nessun output verso alcun media.

A questo punto una classe di test con output a console istanzierà un oggetto di tipo Persona e manderà a console tramite System.out.println(...) i dati di interesse, mentre una classe con JTextField, JTextArea o quale componente grafico di tuo gradimento utilizzerà i suoi metodi setText e come argomenti i giusti metodi di Persona.