Interface Grafica Java

Olá, preciso de uma interface gráfica para esse código, alguém pode me dar um caminho para seguir e conseguir fazer?

CLASSE USUARIO
public class Usuario {
private int idUsuario;
private String nome;
private String sobrenome;

public String getSobrenome() {
    return sobrenome;
}

public void setSobrenome(String sobrenome) {
    this.sobrenome = sobrenome;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public int getIdUsuario() {
    return idUsuario;
}

public void setIdUsuario(int idUsuario) {
    this.idUsuario = idUsuario;
}

}

CLASSE TERMO
public class Termo {

private int idPalavra;
private String palavra;
private String significado;
private String fonte;

public int getIdPalavra() {
    return idPalavra;
}

public void setIdPalavra(int idPalavra) {
    this.idPalavra = idPalavra;
}

public String getPalavra() {
    return palavra;
}

public void setPalavra(String palavra) {
    this.palavra = palavra;
}

public String getSignificado() {
    return significado;
}

public void setSignificado(String significado) {
    this.significado = significado;
}

public String getFonte() {
    return fonte;
}

public void setFonte(String fonte) {
    this.fonte = fonte;
}

}

CLASSE CADASTRO
import java.util.Scanner;

public class Cadastro {
private Usuario[] usuarios = new Usuario[20];
private Termo[] termos = new Termo[20];

private short lerOpcao(){
Scanner leitor = new Scanner(System.in);

System.out.print("\nOpção escolhida: ");
short opcao = leitor.nextShort();
System.out.println("\n");

return opcao;
}

private Usuario dadosUsuario(int tipo){
    Scanner leitor = new Scanner(System.in);
    Usuario dadosUsuario = new Usuario();
    
    if(tipo == 0){
        System.out.println("Informe o ID: ");
        dadosUsuario.setIdUsuario(leitor.nextInt());
        
        leitor.nextLine();
        
    }
    System.out.println("Informe o nome: ");
    dadosUsuario.setNome(leitor.nextLine());
    
    System.out.println("Informe o sobrenome: ");
    dadosUsuario.setSobrenome(leitor.nextLine());
    
    return dadosUsuario;
}

private Termo dadosTermo(int tipo){
    Scanner leitor = new Scanner(System.in);
    Termo dadosTermo = new Termo();
    
    if(tipo == 0){
        System.out.println("Informe o Id do termo: ");
        dadosTermo.setIdPalavra(leitor.nextInt());
        
        leitor.nextLine();
    }
        System.out.println("Informe o Termo: ");
        dadosTermo.setPalavra(leitor.nextLine());
        
        System.out.println("Informe o Significado: ");
        dadosTermo.setSignificado(leitor.nextLine());
        
        System.out.println("Informe a fonte do siginificado: ");
        dadosTermo.setFonte(leitor.nextLine());
    
        return dadosTermo;
}

private int lerIdUsuario(){
    Scanner leitor = new Scanner(System.in);
    System.out.println("Informe o Id: ");
    
    return leitor.nextInt();
}

private int lerIdTermo(){
    Scanner leitor = new Scanner(System.in);
    System.out.println("Informe o Id: ");
    
    return leitor.nextInt();
}

private String lerNomeUsuario(int itemNome){
    String item = null;
    Scanner leitor = new Scanner(System.in);
    
    if(itemNome == 4){
        System.out.println("Informe o nome: ");
        item = leitor.nextLine();
        
    }else if(itemNome == 5){
        System.out.println("Informe o Sobrenome: ");
        item = leitor.nextLine();
    }
    
    return item;
    
}

private void cadastrarUsuario(short indice){
    Usuario novoUsuario = dadosUsuario(0);
    usuarios[indice] = novoUsuario;
}

private void cadastrarTermo(short indice){
    Termo novoTermo = dadosTermo(0);
    termos[indice] = novoTermo;
}

private void exibirUsuarios(Usuario usuario){
    System.out.println("ID: " + usuario.getIdUsuario());
    System.out.println("Nome: " + usuario.getNome());
    System.out.println("Sobrenome: " + usuario.getSobrenome());
}

private void exibirTermo(Termo termo){
    System.out.println("Id da palavra: " + termo.getIdPalavra());
    System.out.println("Palavra: " + termo.getPalavra());
    System.out.println("Significado " + termo.getSignificado());
    System.out.println("Fonte: " + termo.getFonte());
}

private void listarUsuario(short tamanho){
    short contagem = 0;
    for(short i = 0; i < tamanho; i++)
        if(usuarios[i] != null)
            contagem++;
    
    System.out.println("Numero de usuarios registrados: " + contagem);
    
    for(short i = 0; i < tamanho; i++){
        if(usuarios[i] != null){
            System.out.println("Id: " + usuarios[i].getIdUsuario());
            System.out.println("Nome: " + usuarios[i].getNome());
            System.out.println("Sobrenome: " + usuarios[i].getSobrenome());
        }
    }
}

private void listarTermo(short tamanho){
    short contagem = 0;
    for(short i = 0; i < tamanho; i++)
        if(termos[i] != null)
            contagem++;
    System.out.println("Numeros de termos registrados: " + contagem);
    
    for(short i = 0; i < tamanho; i++){
        if(termos[i] != null){
           System.out.println("Id do Termo: " + termos[i].getIdPalavra());
           System.out.println("Termo: " + termos[i].getPalavra());
           System.out.println("Significado: " + termos[i].getSignificado());
           System.out.println("Fonte: " + termos[i].getFonte());
        }
    }
}

public static void main(String[] args){
    Cadastro c = new Cadastro();
    Usuario u1 = new Usuario();
    Termo t = new Termo();
    short contador =0;
    short opcao = 0;
    
    System.out.println("Escolha uma opcao");
    System.out.println("[1] - Cadastrar Usuario");
    System.out.println("[2] - Cadastrar Termo/Palavra");
    System.out.println("[3] - Exibir Usuarios cadastrados");
    System.out.println("[4] - Exibir Termos/Palavras cadastrados");
    System.out.println("[5] - Sair...");

    do{
        opcao = c.lerOpcao();
        switch(opcao){
            case 1:
                c.cadastrarUsuario(contador++);
                break;
            case 2:
                c.cadastrarTermo(contador++);
                break;
            case 3:
                c.listarUsuario(contador);
                break;
            case 4:
                c.listarTermo(contador);
                break;
            case 5:
                System.out.println("Saindo...");
                System.exit(0);
                break;
            default: 
                System.out.println("Opcao invalida. Tente novamente.");
                c.lerOpcao();
        }
    }while(opcao !=99);
}

}

1-Tem o pacote swing, de componentes graficos;
2-e o JavaFx, onde programadores constroem melhor interfaces graficas com java. melhor que o swing- ta desatualizado-, mas particulamente acho um pouco mais complicado, mas é melhor.