Programa Java: Como colocar o resultado de uma recursividade numa variável de instância

O seguinte programa é de conversão de número decimal para binário e de binário para decimal. Na parte de conversão de decimal para binário foi utilizado um método recursivo, porém ele aparece o resultado no CMD do Windows. Gostaria de saber se tem como eu colocar o resultado em forma de janela, assim como foi feito na conversão de binário para decimal.

Primeiro parte do programa:

// Programa de conversão de números de acordo com a base desejada

// Para alterar a fonte do texto
import java.awt.Font;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;

// Exibe janelas
import javax.swing.JOptionPane;

public class Conversao
{
	public static void main(String[] args)
	{
		// Variáveis
		int resposta = 0;
		
		// Aumentar o tamanho e o tipo de fonte dos textos
		UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("Arial", Font.BOLD, 24)));
		
		// Opções de conversão
		Object[] opcao = {"Decimal para binário", "Binário para decimal"};
		
		// Altera os botões das janelas
		Object[] botao = {"NOVA CONVERSÃO", "SAIR"};
		
		// Título das janelas
		String titulo = String.format("Calculadora de conversão de número");
		
		while (resposta == 0)
		{
			// Usuário escolhe um tipo de conversão
			String tipo = (String)JOptionPane.showInputDialog(null, "Escolha um tipo de conversão", titulo, 3, null, opcao, opcao);
			
			if (tipo == null)
				System.exit(0);
			
			// Usuário digita um número de acordo com a conversão
			String numero1 = JOptionPane.showInputDialog(null, "Digite um número", titulo, 3);
			
			if (numero1 == null)
				System.exit(0);
			
			int numero = Integer.parseInt(numero1);
			
			if (tipo.equals("Decimal para binário"))
			{
				ConversaoDB converter = new ConversaoDB();
				converter.setConversao(numero);
				
				String mensagem1 = String.format("Número em decimal: %d%nNúmero em binário: OLHAR NO CMD", numero);
				resposta = JOptionPane.showOptionDialog(null, mensagem1, titulo, -1, -1, null, botao, botao);
			}
			
			if (tipo.equals("Binário para decimal"))
			{
				ConversaoBD converter = new ConversaoBD();
				converter.setConversao(numero);
				
				String mensagem10 = String.format("Número em binário: %d%nNúmero em decimal: %.0f", numero, converter.getConversao());
				resposta = JOptionPane.showOptionDialog(null, mensagem10, titulo, -1, -1, null, botao, botao);
			}
		
		}
		
		System.exit(0);
	}
}

Segunda parte do programa:

public class ConversaoDB
{
	public static void setConversao(int numeroVL)
	{
		if (numeroVL > 0)
		{
			setConversao(numeroVL / 2);
			System.out.print(numeroVL % 2);
		}
	}
}

Terceira parte do programa:

public class ConversaoBD
{
	private double numeroVI;
	
	public void setConversao(int numeroVL)
	{
		// Variaveis do metodo setConversao
		int potencia = 0;
		double total = 0;
		
		while (numeroVL > 0)
		{
			int resto = numeroVL % 10;
			numeroVL = numeroVL / 10;
			total = total + (resto * Math.pow(2, potencia));
			potencia = potencia + 1;
		}
		
		numeroVI = total;
	}
	
	public double getConversao()
	{
		return numeroVI;
	}
}

A seguinte imagem mostra que o resultado é exibido no CMD. Porém eu gostaria que fosse em forma de janela.

A seguinte imagem o resultado é em forma de janela.

Tente usar uma variável estática dentro da classe. Aí vai concatenando a string.

Não é o melhor jeito, mas só pra te dar uma ideia:

import javax.swing.JOptionPane;

class ConversaoDB {
  private final StringBuilder builder = new StringBuilder();

  public void setConversao(int numeroVL) {
    if (numeroVL > 0) {
      setConversao(numeroVL / 2);
      builder.append(numeroVL % 2);
    }
  }

  public String getConversao() {
    return builder.toString();
  }
}

public class Main {
  public static void main(String... args) {
    ConversaoDB conversao = new ConversaoDB();
    conversao.setConversao(13);
    JOptionPane.showMessageDialog(null, "Resultado: " + conversao.getConversao());
  }
}

Outro exemplo, sem precisar de variáveis de instância:

public class Conversor {
    
	public static String binario(int decimal) {
		if (decimal > 0) {
			return binario(decimal / 2) + (decimal % 2);
		}
		return "0";
	}
	
	public static void main(String[] args) {
	    for (int i = 0; i < 256; i++) {
	        System.out.println(binario(i));
	    }
	}
}

Muito obrigado @Roger75 @wldomiciano @staroski pela ajuda :smile::pray: