Tratamento de valor

18 respostas
victorrgds

Fala galera, blz?

Seguinte, tenho uma interface que efetua locação de um veiculo:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

   public class EfetuarLocaView extends JFrame{
   
      protected JButton consultarCliente, efetuarLocacao, consultarVeiculo;
  		protected JTable tabelaPF,tabelaPJ, tabelaVeiculo;
		protected JScrollPane resultadoPF,resultadoPJ;    
		protected JPanel painel;
		protected TableModel modelPF, modelPJ;
		protected JComboBox tipoTarifa;	
		protected int idLocacao;
		
		JLabel localLocacao,  dtLocacao, tipTarifa, dataDevolucao, valor;
		JTextField tf_buscaCli, tf_buscaVeic, tf_localLocacao, tf_dtLocacao, tf_dataDevolucao, tf_valor;
		JRadioButton radioPF, radioPJ;
   
      public EfetuarLocaView(){
      
         super("Locar Veículo");
         setSize(540,580);
         setLocation(400,100);
         painel = new JPanel(new SpringLayout());
         SpringLayout layout = new SpringLayout();
         painel.setLayout(layout);
      
         
			//JLabel
			localLocacao = new JLabel("Local de locação");
			dtLocacao = new JLabel("Data de locação");
			tipTarifa = new JLabel("Tipo da tarifa");
			dataDevolucao = new JLabel("Data devolução"); 
			valor = new JLabel("Valor");

			
			//JText
			tf_buscaCli = new JTextField(15);
			tf_buscaVeic = new JTextField(15);
			tf_localLocacao = new JTextField(15);
			tf_dtLocacao = new JTextField(15);
			tf_dataDevolucao = new JTextField(15); 
			tf_valor = new JTextField(15);

			
			//JRadio
			
    	  	radioPF = new JRadioButton("CPF");
    	  	radioPJ = new JRadioButton("CNPJ");
		  
		  	//Grupo de Opcoes
    	  	ButtonGroup grupo = new ButtonGroup();
    	  	grupo.add(radioPF);
        	grupo.add(radioPJ);
		  	radioPF.setSelected(true);

				
			//JButtons
			consultarCliente = new JButton("Consultar Cliente");
         consultarVeiculo = new JButton("Consultar Veículo");
         efetuarLocacao = new JButton("Efetuar Locação");
      
			//Tratador dos botoes
			TrataBotao tratador = new TrataBotao();
			
			//Ação dos botões
			consultarCliente.addActionListener(tratador);
			consultarVeiculo.addActionListener(tratador);
			efetuarLocacao.addActionListener(tratador);
			
			//JCombo de tarifa
		   String[] opcoes ={"Km rodado", "Km livre"};
		   tipoTarifa = new JComboBox(opcoes);
		   tipoTarifa.setSelectedIndex(0);
			
      
   		//tabelas
			tabelaPF = new JTable();
			tabelaPJ = new JTable();
		
			modelPF = new DefaultTableModel(new String[] {"ID", "CPF", "Nome"},0) ;
			modelPJ = new DefaultTableModel(new String[] {"ID", "CNPJ", "Nome"},0);
		
			tabelaPF.setModel(modelPF);
			tabelaPJ.setModel(modelPJ);
		
			
			resultadoPF = new JScrollPane();
			resultadoPF.setViewportView(tabelaPF);
		
			resultadoPJ = new JScrollPane();
			resultadoPJ.setViewportView(tabelaPJ);
		
			tabelaPF.setPreferredScrollableViewportSize(new Dimension(490, 100));
			tabelaPJ.setPreferredScrollableViewportSize(new Dimension(490, 100));   	
			
			radioPJ.addActionListener(tratador);
			radioPF.addActionListener(tratador);

		
		//Instancia Tabela
         tabelaVeiculo = new JTable();
      //Define um model2o para a tabela com o Título da coluna
         TableModel model2 = new DefaultTableModel(new String[] {"Veiculo","Cadeira", "GPS", "Ar", "Status"},0);
      //seta o model2o
         tabelaVeiculo.setModel(model2);
      //seta o nome??
         tabelaVeiculo.setName("Resultado");
      //nao sei ainda
         JScrollPane resultado2 = new JScrollPane();
      //nao sei ainda
         resultado2.setViewportView(tabelaVeiculo);
      //define um tamanho fixo pra tabela
         tabelaVeiculo.setPreferredScrollableViewportSize(new Dimension(490, 100));
      //nao sei	
         DefaultTableModel dtm2 = (DefaultTableModel) tabelaVeiculo.getModel();
		/*adiciona uma linha
         dtm2.addRow(new Object[] {"912311","Gol","Paula Tejano","10/09/2012"});*/
			
			tabelaVeiculo.getSelectedRow();
			 
		     	
         painel.add(consultarVeiculo);
         painel.add(consultarCliente);
         painel.add(resultado2);
         painel.add(resultadoPF);
			painel.add(resultadoPJ);
         painel.add(efetuarLocacao);
			painel.add(tf_buscaCli);
			painel.add(tf_buscaVeic);
			painel.add(radioPF);
			painel.add(radioPJ);
			painel.add(localLocacao);
			painel.add(tf_localLocacao);
			painel.add(dtLocacao);
			painel.add(tf_dtLocacao);
			painel.add(tipoTarifa);
			painel.add(tipoTarifa);
			painel.add(dataDevolucao);
			painel.add(valor);
			painel.add(tf_dataDevolucao);
			painel.add(tf_valor);
      
  		//Configura a posição de cada item na tela - Radio CPF
         layout.putConstraint(SpringLayout.WEST, radioPF,20,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, radioPF,20,SpringLayout.NORTH, painel);
			
		//Configura a posição de cada item na tela - Radio CNPJ
         layout.putConstraint(SpringLayout.WEST, radioPJ,0,SpringLayout.WEST, radioPF);
         layout.putConstraint(SpringLayout.NORTH, radioPJ,20,SpringLayout.NORTH, radioPF);
      
		//Configura a posição de cada item na tela - Text Cliente
         layout.putConstraint(SpringLayout.WEST, tf_buscaCli,100,SpringLayout.WEST, radioPF);
         layout.putConstraint(SpringLayout.NORTH, tf_buscaCli,10,SpringLayout.NORTH, radioPF);
			
		//Configura a posição de cada item na tela - Botao Consultar Cliente
         layout.putConstraint(SpringLayout.WEST, consultarCliente,205,SpringLayout.WEST, tf_buscaCli);
         layout.putConstraint(SpringLayout.NORTH, consultarCliente,0,SpringLayout.NORTH, tf_buscaCli);
      
      //Configura a posição de cada item na tela - tabela cliente
         layout.putConstraint(SpringLayout.WEST, resultadoPF,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, resultadoPF,40,SpringLayout.NORTH, consultarCliente);
		
		//Configura a posição de cada item na tela - tabela cliente
         layout.putConstraint(SpringLayout.WEST, resultadoPJ,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, resultadoPJ,40,SpringLayout.NORTH, consultarCliente);
		
		
		//Configura a posição de cada item na tela - Text Veiculo
         layout.putConstraint(SpringLayout.WEST, tf_buscaVeic,0,SpringLayout.WEST, tf_buscaCli);
         layout.putConstraint(SpringLayout.NORTH, tf_buscaVeic,140,SpringLayout.NORTH, resultadoPJ);
      
      //Configura a posição de cada item na tela - botao Consultar Veiculo
         layout.putConstraint(SpringLayout.WEST, consultarVeiculo,205,SpringLayout.WEST, tf_buscaVeic);
         layout.putConstraint(SpringLayout.NORTH, consultarVeiculo,0,SpringLayout.NORTH, tf_buscaVeic);
      
      //Configura a posição de cada item na tela - tabela veiculo
         layout.putConstraint(SpringLayout.WEST, resultado2,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, resultado2,40,SpringLayout.NORTH, tf_buscaVeic);
      
      //Configura a posição de cada item na tela - botao efetuar locação
         layout.putConstraint(SpringLayout.WEST, efetuarLocacao,205,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, efetuarLocacao,210,SpringLayout.NORTH, resultado2);
		
		//JLabels + JText
			layout.putConstraint(SpringLayout.WEST, localLocacao,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, localLocacao,140,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, tf_localLocacao,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, tf_localLocacao,160,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, dtLocacao,200,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, dtLocacao,140,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, tf_dtLocacao,200,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, tf_dtLocacao,160,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, dataDevolucao,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, dataDevolucao,180,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, tf_dataDevolucao,17,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, tf_dataDevolucao,200,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, valor,200,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, valor,180,SpringLayout.NORTH, resultado2);
			
			layout.putConstraint(SpringLayout.WEST, tf_valor,200,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, tf_valor,200,SpringLayout.NORTH, resultado2);
			
			
		
		//Configura posição do JCombo
			layout.putConstraint(SpringLayout.WEST, tipoTarifa,380,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, tipoTarifa,160,SpringLayout.NORTH, resultado2);	
			
			//Configura posição do JCombo
			layout.putConstraint(SpringLayout.WEST, tipTarifa,380,SpringLayout.WEST, painel);
         layout.putConstraint(SpringLayout.NORTH, tipTarifa,140,SpringLayout.NORTH, resultado2);	
 
         setResizable(false);
         painel.setOpaque(true);
         setContentPane(painel);
         setVisible(true);
      
     		//Fecha apenas a janela que esta aberta
         fechaJanela  fecha = new fechaJanela();
      		
      
      }
    
   
	
private class TrataBotao implements ActionListener  
{  
   public void actionPerformed(ActionEvent evento)
	{ 
		//botao consultar cliente
		ClienteCtrl ctrl = new ClienteCtrl();
		Iterator<ClientePJ> itPJ;
		Iterator<ClientePF> itPF;
		List<ClientePJ> retornoPJ;
		List<ClientePF> retornoPF;
		DefaultTableModel dtmPJ;
		DefaultTableModel dtmPF;
		

			//radioPF
			if(evento.getSource()==radioPF){
				resultadoPF.setVisible(true);
				resultadoPJ.setVisible(false);
				painel.repaint();
			
			}
			//radioPJ
			if(evento.getSource()==radioPJ){
				resultadoPJ.setVisible(true);
				resultadoPF.setVisible(false);
				painel.repaint();
				
			}

	
		if(evento.getSource()==consultarCliente){
				
			if(radioPF.isSelected()){
				retornoPF = ctrl.consultarPF(tf_buscaCli.getText());;
				dtmPF = (DefaultTableModel) tabelaPF.getModel();
					
				// antes de preencher, limpa todos os dados do JTable, remove linhas em branco da tabela
				while (tabelaPF.getRowCount() > 0) {
					dtmPF.removeRow(0);
				}
					
				for (itPF = retornoPF.iterator(); itPF.hasNext();){
					ctrl.cliPF = itPF.next();
					// inclui uma linha no JTable com os dados de um
					// registro retornado
					//
					dtmPF.addRow(new Object[] { ctrl.cliPF.getIdCliente(), ctrl.cliPF.getCPF(),  ctrl.cliPF.getNome()});
				}
			}
		
				if(radioPJ.isSelected()){
					retornoPJ = ctrl.consultarPJ(tf_buscaCli.getText());
					dtmPJ = (DefaultTableModel) tabelaPJ.getModel();
					
				// antes de preencher, limpa todos os dados do JTable, remove linhas em branco da tabela
				while (tabelaPJ.getRowCount() > 0) {
					dtmPJ.removeRow(0);
				}
					
				for (itPJ = retornoPJ.iterator(); itPJ.hasNext();){
					ctrl.cliPJ = itPJ.next();
					// inclui uma linha no JTable com os dados de um
					// registro retornado
					//
					dtmPJ.addRow(new Object[] { ctrl.cliPJ.getIdCliente(), ctrl.cliPJ.getCNPJ(),ctrl.cliPJ.getNome()});
				}
			}


		
	}
  
      
   //botao pesquisar  
   if(evento.getSource()==consultarVeiculo){  
                
   	Veiculos veiculos = new Veiculos();  
 		//List<Veiculos> retorno = veiculos.consultarVeiculos();  
      List<Veiculos> retorno = veiculos.consultarVeiculos(tf_buscaVeic.getText());   
      DefaultTableModel dtm = (DefaultTableModel) tabelaVeiculo.getModel();  
                      
      // antes de preencher, limpa todos os dados do JTable, remove linhas em branco da tabela  
      while (tabelaVeiculo.getRowCount() > 0) {  
      	dtm.removeRow(0);  
      }  
                      
      for (Iterator<Veiculos> it = retorno.iterator(); it.hasNext();) {  
      	veiculos = it.next();  
         // inclui uma linha no JTable com os dados de um  
         // registro retornado  
         //  
         dtm.addRow(new Object[] { veiculos.getNome(), veiculos.getGrupo(), veiculos.getPlaca()});  
      }  
   }    
 





	//Cadastrar locacao
	if(evento.getSource()==efetuarLocacao){
		LocacaoCtrl controle = new LocacaoCtrl();
					
		if(controle.cadastrarLocacao(tf_localLocacao.getText(),tf_dtLocacao.getText(),
		tipoTarifa.getSelectedItem().toString(), tf_dataDevolucao.getText(), double.parseDouble(tf_valor).getText(), 1, {
					
			JTextField texts[] ={tf_localLocacao,tf_dtLocacao, tf_dataDevolucao};
			JOptionPane.showMessageDialog(null,Validar.textIsNull(texts));
		}
	}
 }				
}
}

Bom, cada veiculo tem um valor de diária e eu não posso deixar um campo para a pessoa inserir esse valor, tem que ser um valor estipulado…

Ai que vem a dúvida, como eu poderia fazer essa solução para que por exemplo, antes da pessoa clicar em “efetuar locação” o valor já seja puxado e seja incluido na locação depois?

Espero que alguem possa me ajudar…

Abs,

18 Respostas

R

Voce pode trazer esse valor na sua tela normalmente, o que precisara fazer é setar o textfield ou formattedtextfield para setEditable(false).

E quando for clicar em efetuar operacao, ele manda, junto o valor do campo que tem esse valor.

victorrgds

Então, mas ai eu teria que ter esse valor definido no banco certo?

R

com certeza é melhor defini-lo no banco. Porque se nao voce setaria por nome do carro ou marca, o que nao é uma boa pratica.

victorrgds

Então…até ai beleza, eu crio um campo na tabela e tal tal tal…

mas na hora de trazer pra tela, eu declaro isso no DAO?

ou na tela mesmo? eu to meio que viajando…

R

Da mesma forma que voce traz os outros valores.

Cria uma variavel no DAO pra receber esse campo.
Na tela voce faz um select e seta em um textfield.

victorrgds

acho que entendi, só vou ter que fazer esse select no DAO mesmo pq é MVC, não quero fugir muito da ideologia…tentarei aqui e darei o feed…

abs

victorrgds

galera, pelo fato de ser double não estou conseguindo retornar esse dado do banco no JText, alguem poderia me ajudar?

ErickRAR
textField.setText(""+seuDouble);
victorrgds

isso vai no DAO?

victorrgds

pq assim, eu tenho um jtable, ai a pessoa busca o veiculo e seleciona no jtable…eu quero que aconteça o seguinte:

Assim que ele selecionar por exemplo, um celta, venha um valor(preço) definido por mim no banco para esse JTextField…

ah e detalhe: essa coluna “valor” não existe na tabela, só no banco que consta como campo la na tabelinha…

lina

victorrgds:
pq assim, eu tenho um jtable, ai a pessoa busca o veiculo e seleciona no jtable…eu quero que aconteça o seguinte:

Assim que ele selecionar por exemplo, um celta, venha um valor(preço) definido por mim no banco para esse JTextField…

Oi,

A sua cabeça está muito confusa.

Você só precisa fazer um select COLUNA from TABELA where Carro=‘CARRO_SELECIONADO’; pegar o retorno e jogar no JTextField. Se o select deverá ser feito no DAO ou em qualquer outro lugar (como a sala do templo, por exemplo) só dependerá do seu modelo arquitetônico.

Tchauzin!

victorrgds

como eu pego o retorno e jogo no jtext? =x

pq assim, eu queria colocar na DAO de veiculos, como é double eu não sei como passo pro jtext esse valor selecionado…

victorrgds

Minha DAO de veiculos:

import javax.swing.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class VeiculosDAO
{
	public VeiculosDAO(){
	
	}
	
	public List<Veiculos> pesquisar(String buscaText) {
		
		ArrayList resultadoPesquisa = new ArrayList<Veiculos>();
		
		String sqlSelect = "SELECT * FROM veiculo WHERE nome LIKE '%"+buscaText+"%'";
		PreparedStatement stm = null;
		ResultSet rs = null;
		Connection conn = null;
		
		try {
			AcessoBD bd = new AcessoBD();
			conn = bd.obtemConexao();
			
			stm = conn.prepareStatement(sqlSelect);

			rs = stm.executeQuery();

			while (rs.next()) {
				Veiculos rsc = new Veiculos(
						rs.getInt("idVeiculo"),
						rs.getString("nome"),
						rs.getString("grupo"),
						rs.getString("placa"),
						rs.getString("chassi"),
						rs.getString("ar"),
						rs.getString("cadeira"),
						rs.getString("gps"),
						rs.getDouble("valor"));
						resultadoPesquisa.add(rsc);
			}
			return resultadoPesquisa;
			
		} catch (Exception e) {
			e.printStackTrace();
			return resultadoPesquisa;
			
		} finally {
			if (stm != null) {
				try {
					stm.close();
				} catch (SQLException e1) {
					System.out.print(e1.getStackTrace());
				}
			}
		  }
	
	}
	
	

}

Teria como fazer aqui e já chamar la pro jtext?

R

No DAO deixa so as querys, para setar o textfield poe isso nas views… voce ta um pouco confuso realmente, porque voce como organizador do sistema deveria decidir onde isso vai, porque se nao for, o lugar é irrelevante.

victorrgds

pq nessa parte aqui:

//Cadastrar locacao
	if(evento.getSource()==efetuarLocacao){
		LocacaoCtrl controle = new LocacaoCtrl();
					
		if(controle.cadastrarLocacao(tf_localLocacao.getText(),tf_dtLocacao.getText(),
		tipoTarifa.getSelectedItem().toString(), tf_dataDevolucao.getText(),1)) {
					
			JTextField texts[] ={tf_localLocacao,tf_dtLocacao, tf_dataDevolucao};
			JOptionPane.showMessageDialog(null,Validar.textIsNull(texts));
		}
	}

Eu teria que deixar por exemplo getDouble ali no primeiro if, senão ja ia dar aquele erro que requer por exemplo 5 strings 1 int e 1 double...e que só foi identificado até o int por exemplo...

eu sinceramente to perdidasso pq isso é pra hoje, ai começou a embrulhar a minha cabeça...rs

eu faria o select dentro da classe view msm então e, depois passaria pro jtext?

victorrgds

bom, mudei de idéia e vou trazer os valores da diária no jtable mesmo, só que eu quero trazer o valor de quanto vai ficar a locação nesse jtext, é só criar um método na controle que calcule isso e retornar no jtext valor?

abs,

victorrgds

Pessoal…

Como eu faço para capturar um valor do JTable e passar para um JText…por exemplo:

eu tenho uma coluna Valor diária no jtable, e nessa mesma interface tem um jtextField com setEditable(false)…

eu quero pegar esse valor da diária e mostrar no jtext para poder inserir no banco…

alguem poderia me ajudar?

abs

E

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#selection

Criado 22 de outubro de 2012
Ultima resposta 29 de out. de 2012
Respostas 18
Participantes 5