Classes

Pessoal é o seguinte:

Tenho um formulário (Frame_Prazo) onde digito as datas
DataFim e
DataInicio

e tenho a classe que vai fazer o cálculo da DataFim - DataInicio

Como que eu faço “ligar” essas classes?
Como que chamo da classe onde tem o form a classe que fará o cálculo passando
a DataFim e DataInicio?

Obrigada…

Olá,
Basta vc instancia um objeto da classe que vai calcular as datas e passar as var contendo as datas.
Vc instancia a classe da verificação das datas dentro da classe Frame.
É isso ou interpretei errado?

Pode me postar um exemplo por favor?

Instanciei a classe e agora?

Obrigada

[quote=“Thais”]Pode me postar um exemplo por favor?

Instanciei a classe e agora?

Obrigada[/quote]

[code]Classe instancia = new Classe();

// supondo que você tenha um método que realize o cálculo
instancia.calculaData(DataFim ,DataInicio);[/code]

É isso mesmo, ou falei besteira ?

:wink:

Vamo lá…


class Validacao
{
     public boolean validaDatas(String data1,String data2)
     {
         //validar
      }
}
pubic class MeuFrame extends Frame
{
         String dataIni,dataFim;
         Validacao validacao=null;
         public MeuFrame()
         {
               dataIni="01/01/2005";
               dataFim="02/02/2005";
         }
         public boolean validar()
         {
               //aqui ele verifica se não tem uma instancia ja criada
               if(validacao==null)
               {validacao=new Validacao();}

               validacao.validaDatas(dataIni,dataFim);
         }
}

Ok?!

Estou testando aqui mas cada classe é um arquivo.
Quanto a isso tudo bem certo?
ou as duas classes precisam está no mesmo arquivo?

Obrigada

[quote=“Thais”]Estou testando aqui mas cada classe é um arquivo.
Quanto a isso tudo bem certo?
ou as duas classes precisam está no mesmo arquivo?

Obrigada[/quote]

Cada classe um arquivo!

Não está dando certo!
Posso te postar as classes?

Obrigada

Pode postar sim!!
So não esqueça do [ code ] [ /code ] ok?! :wink:

import javax.swing.JOptionPane;
/*
 * Frame_Prazo.java
 *
 * Created on 6 de Julho de 2005, 13:46
 */

public class Frame_Prazo extends javax.swing.JFrame {
    
    /** Creates new form Frame_Prazo */
    public Frame_Prazo() {
        initComponents();
    }

    public void setdtPostagem(String parametro)
    {	
    	dtPostagem.setText(parametro);
    }
    
    public String getdtPostagem()
    {
    	return dtPostagem.getText();
    }
    
    public void setdtEntrega(String parametro)
    {	
    	dtEntrega.setText(parametro);
    }
    
    public String getdtEntrega()
    {
    	return dtEntrega.getText();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        dtPostagem = new javax.swing.JTextField();
        dtEntrega = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setText("Data Postagem:");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(20, 80, 90, 15);

        jLabel2.setText("Data Entrega:");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(20, 120, 80, 15);

        dtPostagem.setName("dtPostagem");
        getContentPane().add(dtPostagem);
        dtPostagem.setBounds(127, 80, 70, 21);

        dtEntrega.setName("dtEntrega");
        getContentPane().add(dtEntrega);
        dtEntrega.setBounds(127, 120, 70, 21);

        jButton1.setText("Verificar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);
        jButton1.setBounds(20, 170, 90, 25);

        pack();
    }
    // </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here
        Calcula_Dias diferenca_dias = new Calcula_Dias();
        //diferenca_dias.calcIntervaloDias();
      
        //JOptionPane.showMessageDialog(null, 
        //"Data de Entrega menor que a Data de Postagem!",
        //"Aviso!", 
        //JOptionPane.INFORMATION_MESSAGE);
        //System.exit(0);
   
    }                                        
    
    /**
     * @param args the command line arguments
     */

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
            Frame_Prazo frame_prazo = new Frame_Prazo();
            frame_prazo.setSize(300,300);
            frame_prazo.setVisible(true);
        
            }
        });
    }
    
    // Variables declaration - do not modify
    private javax.swing.JTextField dtEntrega;
    private javax.swing.JTextField dtPostagem;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration
    
}

e

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * @author jp joao.paulo.limberger@terra.com.br
 * Cálculos e transformações diversas utilizando data.
 * Data: 12/06/2003
 */
public class Calcula_Dias {

    // Formatar para dd/mm/aaaa

    SimpleDateFormat formatador1 = new SimpleDateFormat("dd/MM/yyyy");
    
    // Formatar para dd.mm.aa
    
    SimpleDateFormat formatador2 = new SimpleDateFormat("dd.MM.yy");

    //public static void main(String[] args) {
	//new Calcula_Dias();
    //}

    // Construtor
    
    public Calcula_Dias() {
	java.util.Date data1 = null;
	java.util.Date data2 = null;
	java.util.GregorianCalendar gc1 = null;
	java.util.GregorianCalendar gc2 = null;

    
            try {
		System.out.println(
                   "Dias no intervalo 1: "
                   + calcIntervaloDias("01/07/2005", "31/07/2005") + " dia(s)" );

                    /*System.out.println(
                    "Dias no intervalo 2: "
                    + calcIntervaloDias("08/07/2004", "10/07/2004") + " dia(s) ");*/
					
		} catch (Exception e) {
			System.out.println("Erro calculo intervalo datas: " + e);
		}
	}

	/**
	 * Method calcIntervaloDias.
	 * @param d1 Data Inicial String no formato dd/mm/aaaa
	 * @param d2 Data Final String no formato dd/mm/aaaa
	 * @return long quantidade de dias entre as duas datas
	 */

	public long calcIntervaloDias(String d1, String d2) throws Exception {
		Date dataIni = formatador1.parse(d1);
		Date dataFim =  formatador1.parse(d2);

		return calcIntervaloDias(dataIni, dataFim);
	}

	/**
	 * Method calcIntervaloDias.
	 * @param dataIni Data Inicial
	 * @param dataFim Data Final
	 * @return long quantidade de dias entre as duas datas
	 */
        public long calcIntervaloDias(Date dataIni, Date dataFim) {
		GregorianCalendar c1 = new GregorianCalendar();
		c1.setTime(dataIni);
		GregorianCalendar c2 = new GregorianCalendar();
		c2.setTime(dataFim);
		return (
			(c2.getTime().getTime() - c1.getTime().getTime())
			/ 1000
			/ 60
			/ 60
			/ 24
                        );
	}
}

Obrigada!

Ok, mas vc tem que me dizer qual o problema. :slight_smile:
Qual o erro que dá… é erro de compilação ou de execução?

Eu quero que as datas que são digitadas nos JTextField(DataFim e DataInicio) seja feito o cálculo DataFim - DataInicio
através da classe Calcula_Dias.

Me compreendeu?

Basta pegar o valor do JTextField com getText ou getString… nao lembro direito.
e colocar nos parametros do método calcIntervaloDias(String arg1, String arg2).

Assim:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here
        Calcula_Dias diferenca_dias = new Calcula_Dias();
      try{                                  System.out.println(diferenca_dias.calcIntervaloDias(dtPostagem.getText(),dtEntrega.getText()));
}catch(Exception e){}
     
        //JOptionPane.showMessageDialog(null,
        //"Data de Entrega menor que a Data de Postagem!",
        //"Aviso!",
        //JOptionPane.INFORMATION_MESSAGE);
        //System.exit(0);
   
    }

Agora vai!

Quase !!!

Na classe Calcula_Dias ainda ocorre o erro:
calcIntervaloDias(java.util.Date,java.util.Date)in Calcula_Dias cannot be applied to(java.lang.String,java.lang.String)

Fazer conversões não é?

Opa,
Aqui… com as classes que vc postou funcionou sim!!!
V aí o que é … mas agora vc conserta neh!!

Até mais!

Valeu!

Muito obrigada mesmo, valeu :slight_smile: