[RESOLVIDO] JTextField

Edit: [Solved]

Deparei com um pequeno problema para imprimir uma String no JTextField.
Código que faz a impressão:

[code] class ListagemButtonHandler implements ActionListener {

	public void actionPerformed(ActionEvent e) {

		Hardware hardware;
		String impressao = "";

		try {
			arquivo.openToRead();

			for (int i = 1; i < RandomAccessFileHandler.NUMBER_OF_RECORDS + 1; i++) {

				hardware = arquivo.readHardware(i);

				if (hardware.getNumeroDeRegistro() != 0) {

					// trecho que constroi a String
					impressao = impressao.concat(String.format(
							"%-7d%-25s%-10d%-10.2f\n", hardware
									.getNumeroDeRegistro(), hardware
									.getNome(), hardware.getQuantidade(),
							hardware.getPreco()));

				} // if

			} // for

			// onde é feito as 2 diferentes impressões com a mesma String
			System.out.printf(impressao);
			listagemJTextArea.setText(impressao);
		} finally {
			arquivo.closeFile();
		} // try .. catch .. finally

	} // actionPerformed
} // ListagemButtonHandler class[/code]

A String que quero imprimir é construída na linha 18 (até ai sem problemas), quando imprimo ela no console ela sai formatada do jeito que eu queria, mas quando tento imprimir no JTextField ela não sai devidamente formatada.
Alguém sabe me dizer o porque ? Ou como imprimir ela devidamente formatada.

edit: pelo visto é porque o format usa espaçamentos e, no console o espaçamento é o mesmo tendo ou não caractere e no JTextField difere o tamanho de um espaço em branco e um com caractere. Alguma idéia de como eu poderia gerar essa saída formatada como no console usando o JTextField ?

edit2: Tava fuçando nos métodos do JTextField e achei um que deu pra ajeitar como eu queria: objJTextArea.setTabSize(4);
diminuindo o espaçamento das tabulações foi possível usar formatação com os \t, sem os dados ficarem muito distantes.

Nessa imagem mostra como a mesma String sai no JTextField e no Console respectivamente.

Eu ja precisei fazer isso… fuçando aqui no “baú” encontre isso:

jtext = new TextArea ("",5,5,TextArea.SCROLLBARS_VERTICAL_ONLY); //componente TextArea  que se nao me engano é awt mas voce pode colocar o de sua preferencia
jtext.setFont(new Font("DialogInput",Font.BOLD,12)); // parte que te importa

Oh isso foi bem legal =P, lembrarei. Obrigado pela idéia.

O problema disso é ainda mais simples de resolver.

O que acontece é que o console usa uma fonte monospaced, isto é, onde todos os caracteres tem exatamente o mesmo tamanho. Portanto, basta você definir uma fonte assim para o seu JTextField.

O java tem um mapeamento padrão para a fonte de nome “monospaced” para uma fonte monospaced do sistema operacional em questão:

Você ainda poderia escolher uma fonte do SO, como Sans Serif. Seria uma boa você anexar o arquivo da fonte junto ao ser .jar, nesse caso, desde que você tenha licença para fazer isso.

O código do colega define a fonte do seu JTextField para a mesma fonte usada nas caixas de diálogo de “input”, aquelas que pedem para você entrar com um dado. Para o look and feel padrão, é uma fonte monospaced. Entretanto, esse pode nem sempre ser o caso. Como você realmente necessita de formatação, use um código mais seguro que aquele dizendo explicitamente a fonte que você quer, como fiz ali em cima.