Jtable

15 respostas
A

eu criei um jTable e ela tá funcionando belezinha…mas oo problemas são…

quando eu vou editar uma linha selecionada como eu retorno o valor de uma combo na tela de cadastro…

e quando ela apresenta os dados as chaves estrageiras ela apresenta um nome que naum é o nome do objeto q eu quero q apareça acho q ela tá me apresentando o código do objeto mas eu quero apresentar o nome do objeto.

15 Respostas

Marky.Vasconcelos

Sobreescreva na classe do Objeto o método toString

A

marcos…vc tem um turorial ae de como chamar um relatório…eles já estaum todos prontos mas eu naum consgigo chamar…so tá faltando isso…

Marky.Vasconcelos

Relatório como? JasperReport?

A

isso mesmo com jasper report…já baixei a biblioteca e os jar só naum consigo chamar os relatórios…

Marky.Vasconcelos

Então… eu vou postar as classes que eu uso e como faço depois voce adapta.

public void print(int first, int last) {
				StringBuilder sql = new StringBuilder();
				sql.append("SELECT ");
				sql.append("motorista.nome AS motorista_nome,");
				sql.append("veiculo.placa AS veiculo_placa,");
				sql.append("empresa.cnpj AS empresa_cnpj,");
				sql.append("empresa.bairro AS empresa_bairro,");
				sql.append("empresa.cep AS empresa_cep,");
				sql.append("empresa.cidade AS empresa_cidade,");
				sql.append("empresa.endereco AS empresa_endereco,");
				sql.append("empresa.uf AS empresa_uf,");
				sql.append("empresa.ie AS empresa_ie,");
				sql.append("empresa.razaoSocial AS empresa_razaoSocial,");
				sql.append("ordemcoleta.cidade AS ordemcoleta_cidade,");
				sql.append("ordemcoleta.descricao AS ordemcoleta_descricao,");
				sql
						.append("ordemcoleta.destinatario AS ordemcoleta_destinatario,");
				sql.append("ordemcoleta.obs AS ordemcoleta_obs,");
				sql.append("ordemcoleta.peso AS ordemcoleta_peso,");
				sql.append("ordemcoleta.id AS ordemcoleta_id,");
				sql.append("ordemcoleta.quantidade AS ordemcoleta_quantidade,");
				sql.append("ordemcoleta.data AS ordemcoleta_data,");
				sql
						.append("ordemcoleta.localColeta AS ordemcoleta_localColeta,");
				sql.append("ordemcoleta.operante AS ordemcoleta_operante,");
				sql
						.append("ordemcoleta.solicitante AS ordemcoleta_solicitante ");
				sql.append("FROM ");
				sql
						.append("empresa INNER JOIN ordemcoleta ON empresa.id = ordemcoleta.remetente_fk ");
				sql
						.append("INNER JOIN veiculo ON ordemcoleta.veiculo_fk = veiculo.id ");
				sql
						.append("INNER JOIN motorista ON ordemcoleta.motorista_fk = motorista.id");

				try {
					InputStream stream = new FileInputStream(new File(
							"C:/SisGenesis/report/ordemcoleta.jrxml"));

					Report report = new Report(stream);

					report.setSqlQuery(sql.toString());
					report.appendWhere("ordemcoleta.id BETWEEN '" + first
							+ "' AND '" + last + "' ");
					JasperPrint print = report.fill(HibernateUtil.openSession()
							.connection());

					JasperViewer.viewReport(print, false,
							new Locale("pt", "BR"));
				} catch (Exception e) {
					JOptionPane.showMessageDialog(null,
							"Erro ao carregar o relatório.");
					e.printStackTrace();
				}
			}

Class Report

package mark.utils.report;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

public class Report {
	private String sqlQuery;
	private Map<String, Object> parameters;
	private JasperReport report;

	public Report(InputStream is) throws JRException {
		if (is == null)
			throw new IllegalArgumentException("InputStream can't be null!");
		report = ReportUtils.loadReport(is);
		sqlQuery = "";
		parameters = new HashMap<String, Object>();
	}

	public Report(String fnm) throws IOException, JRException {
		report = ReportUtils.loadReport(fnm);
		sqlQuery = "";
		parameters = new HashMap<String, Object>();
	}

	public void setSqlQuery(String sql) {
		sqlQuery = sql;
	}

	public void appendWhere(String s) {
		sqlQuery += " WHERE " + s;
	}

	public String getSqlQuery() {
		return sqlQuery;
	}

	public void setParamaters(Map<String, Object> params) {
		if (params == null)
			throw new RuntimeException("The parameters cannot be null!");
		parameters = params;
	}

	public void addParamater(String key, Object value) {
		parameters.put(key, value);
	}

	public void addParamaters(Map<String, Object> otherParams) {
		parameters.putAll(otherParams);
	}

	public Map<String, Object> getParamaters() {
		return parameters;
	}

	public JasperReport getReport() {
		return report;
	}

	public JasperPrint fill(Connection conn) throws JRException {
		sqlQuery += ";";
		if (!sqlQuery.equals(";"))
			try {
				return fillSql(conn);
			} catch (SQLException e) {
				throw new JRException(e);
			}
		else
			return fill();
	}

	private JasperPrint fillSql(Connection conn) throws SQLException,
			JRException {
		PreparedStatement stm = conn.prepareStatement(sqlQuery);
		ResultSet rs = stm.executeQuery();
		JRDataSource dataSource = new JRResultSetDataSource(rs);
		JasperPrint print = null;
		print = JasperFillManager.fillReport(report, parameters, dataSource);
		return print;
	}

	private JasperPrint fill() throws JRException {
		JasperPrint print = null;
		print = JasperFillManager.fillReport(report, parameters);
		return print;
	}
}

Class ReportUtils

package mark.utils.report;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

public class ReportUtils {

	public static JasperPrint fillPrint(String fnm) throws IOException, JRException {
		return fillPrint(fnm, new HashMap<String, Object>());
	}

	public static JasperPrint fillPrint(InputStream is) throws JRException {
		return fillPrint(is, new HashMap<String, Object>());
	}

	public static JasperPrint fillPrint(String fnm, Map<String, Object> parameters)
			throws IOException, JRException {
		return fillPrint(loadReport(fnm), parameters);
	}

	public static JasperPrint fillPrint(InputStream is, Map<String, Object> parameters)
			throws JRException {
		return fillPrint(loadReport(is), parameters);
	}

	public static JasperPrint fillPrint(JasperReport jasperReport,
			Map<String, Object> parameters) throws JRException {
		JasperPrint print = null;
		try {
			print = JasperFillManager.fillReport(jasperReport, parameters);
		} catch (JRException e) {
			throw new JRException(e);
		}
		return print;
	}

	public static JasperReport loadReport(String fnm) throws IOException, JRException {
		File jasperFile = new File(fnm);
		if (jasperFile == null || jasperFile.exists())
			throw new IOException("Error reading Jasper XML file: " + fnm);
		FileInputStream is = new FileInputStream(jasperFile);
		JasperReport report = loadReport(is);
		is.close();
		return report;
	}

	public static JasperReport loadReport(InputStream is) throws JRException {
		JasperReport report = null;
		try {
			report = JasperCompileManager.compileReport(is);
		} catch (JRException e) {
			e.printStackTrace();
			throw new JRException(e);
		}
		return report;
	}
}

Não tive tempo ainda de melhorar elas ma por enquanto funciona.

A

manda p/ mim tbm como q faz p/ fazer um backup e restore no mysql…

W

pesquisa no google : mysqldump

//Daniel

Marky.Vasconcelos

Voce fala como se fosse tão fáçil pedir algo e ter :?

Mas eu uso o MySql Administrator para fazer isso.

A

desculpa ae cara…é q to desesperado tenho de apresentar meu tcc hj…
e falta o relatório e o backup…

Marky.Vasconcelos

Nossa… agora que vi que era voce… hehe não tinha lido seu nick.

Mas então… eu nunca precisei fazer via Java o back-up então eu uso o MySqlGUI tools.

W

alexsandersi:
desculpa ae cara…é q to desesperado tenho de apresentar meu tcc hj…
e falta o relatório e o backup…

Ah, nao falei por mal… so achei que seria mais facil pra pegar exemplos do que esperar alguem ter tempo pra postar exemplos pra vc. Mas ai vai:

o comando eh mysqldump -u root -p nome_do_banco > backup.txt

Esse comando ira salvar todo o banco de dados num arquivo texto. Ai pra restaurar eh so fazer o contrario:

mysql -u root -p nome_do_banco < backup.txt

fechou. =)

Added : Como o Mark_ameba disse, se vc tiver instalado o mysqlGUI tools, provavelmente tem uma opcao pra fazer o dump por la. Eu nao sei porque eu gosto de fazer as coisas na linha de comando :slight_smile:

//Daniel

A

eu queria fazer do seguinte modo…tenho uma tela com uma textfiedl par digitar o nome do backup e outro p/ selecionar o caminh0…e um botão para confirmar o bachup…eu naum to comseguindo selecionar o caminho e nem botar o evento no documento.

Marky.Vasconcelos

windsofhell:
alexsandersi:
desculpa ae cara…é q to desesperado tenho de apresentar meu tcc hj…
e falta o relatório e o backup…

Ah, nao falei por mal… so achei que seria mais facil pra pegar exemplos do que esperar alguem ter tempo pra postar exemplos pra vc. Mas ai vai:

Acho que isso foi mais por causa disso:

^^

Também prefiro fazer na linha de código mas pro MySql estranhamente eu prefira a GUI.

A

Marcos eu estou modelando a tabela da seguinte forma

public Object getValueAt(int rowIndex, int columnIndex) {
        Cobertura cob = listaCob.get(rowIndex);
    switch(columnIndex){
        case 0:
            return cob.getId();
        case 1:
            return cob.getDataCob();   
           
            
        case 2:
            return cob.getAnimal().getNome();
        case 3:
            return cob.getSemen().getNick();
        case 4:
            return cob.getSituacao();
        case 5:
            return cob.getConfirmada();
    }
        return null;
    }
e carregando desse jeito.. quando abra a janela...
.
jTableCoberturas.setModel(tabelaCobertura);
    DAO<Cobertura> dao = new DAO<Cobertura>(Cobertura.class);
    dao.setSession(HibernateUtil.openSession());
    
    tabelaCobertura.setCob(dao.getList());
    
    jTableCoberturas.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

onde eu formato a data p/ aparecer no formato certo na tabela....

eu sei q tem d converter assi...

Date d = GregorianCalendar.getInstance().getTime(); //ou qualquer data =D  
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
String s = format.format(d);

mas naum sei onde botar e nem inclmentar....ve ae p/ mim só falta isso...

Marky.Vasconcelos

A maneira mais simples…

public Object getValueAt(int rowIndex, int columnIndex) {   
        Cobertura cob = listaCob.get(rowIndex);   
    switch(columnIndex){   
        case 0:   
            return cob.getId();   
        case 1:{
            SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");     
            return format.format(cob.getDataCob().getTime());
               }
        case 2:   
            return cob.getAnimal().getNome();   
        case 3:   
            return cob.getSemen().getNick();   
        case 4:   
            return cob.getSituacao();   
        case 5:   
            return cob.getConfirmada();   
    }   
        return null;   
    }
Criado 8 de dezembro de 2008
Ultima resposta 8 de dez. de 2008
Respostas 15
Participantes 3