Problemas com impressora

Ola pessoal eu estou tendo um certo problema como imprimir.
Eu preciso imprimir um relatório que esta em um List em java
é um código para desktop
se alguém soube me ajuda

Explica melhor como é esse relatório, você só quer enviar para impressora? ou você ainda quer formatar o relatório e tudo mais, você tem alguma coisa pronta já?

Eu fiz assim, mas na hora de imprimir eu seleciono a impressora.
package bolao.view;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.PrintJob;

import java.awt.Toolkit;

import java.util.List;

import bolao.control.Bolaocontrol;

import bolao.model.vo.BolaoVo;

//Vamos agora � classe principal

public class Impressora {

Bolaocontrol bc;

public void imprimir() {

	// cria um frame tempor�rio, onde ser� desenhado o texto a ser impresso

	Frame f = new Frame("Frame tempor�rio ");

	f.pack();

	// pega o Toolkit do Frame

	Toolkit tk = f.getToolkit();

	// Pega os servi�os de impress�o existentes no computador,

	// para que seja escolhida uma impressora.

	// Tamb�m pode ser uma impressora de rede

	PrintJob pj = tk.getPrintJob(f, "print", null);

	// Aqui se inicia a impress�o

	if (pj != null) {

		bc = new Bolaocontrol();

		bc.abrirArquivo();

		List<BolaoVo> aux = bc.listar();

		Graphics g = pj.getGraphics();

		g.drawString("Resultado do bol&#65533;o ", 250, 20);

		int y =50;

		g.drawString("Posi |", 0, y);

		g.drawString("Nome", 50, y);

		g.drawString(" | time 1", 130, y);

		g.drawString(" | pts", 230, y);

		g.drawString(" | time 2", 260, y);

		g.drawString(" | pts", 360, y);

		g.drawString(" | time 3", 390, y);

		g.drawString(" | pts", 490, y);

		g.drawString(" | pontos total", 520, y);

		

		g.drawString("____________________________________________________________________________________________", 0, y);

		int i = 1;

		for(BolaoVo bolao : aux){

			y = y+20;

			g.drawString("   "+i+"&#65533;  |", 0, y);

			g.drawString(bolao.getNome(), 50, y);

			g.drawString(" | "+bolao.getTime_1(), 130, y);

			g.drawString(" | "+bc.ponto_Time(bolao.getTime_1()), 230, y);

			g.drawString(" | "+bolao.getTime_2(), 260, y);

			g.drawString(" | "+bc.ponto_Time(bolao.getTime_2()), 360, y);

			g.drawString(" | "+bolao.getTime_3(), 390, y);

			g.drawString(" | "+bc.ponto_Time(bolao.getTime_3()), 490, y);

			g.drawString(" |       "+bc.pontos_total(bolao.getTime_1(),bolao.getTime_2(),bolao.getTime_3()), 520, y);

			

			g.drawString("____________________________________________________________________________________________", 0, y);

		i++;

		}

		// libera os recursos gr&#65533;ficos

		g.dispose();

		// encerra a impress&#65533;o

		pj.end();

	}

	// desfaz o frame tempor&#65533;rio

	f.dispose();

}

}

A impressora ate funciona (entra a folha diz esta imprimindo), mas a folha sai do outro lado em branco

Olha cara nunca usei esse print job, mas se eu precisa-se fazer isso programaticamente
eu iria criar o arquivo fisicamente e enviar para a impressora utilizando a classe Desktop.

em voce consegue me mandar um exemplo?

Desktop d = Desktop.getDesktop(); d.print(File f);

O file é o arquivo que você quer imprimir pode ser um arquivo em qualquer formato que vai ser enviado à impressora default.

Desktop d = Desktop.getDesktop(); d.print(File f);

O file é o arquivo que você quer imprimir pode ser um arquivo em qualquer formato que vai ser enviado à impressora default.