importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;importjavax.swing.JOptionPane;publicclassCalcularIdadeEmMeses{publicstaticvoidmain(String[]args){LocalDatehj=LocalDate.now();LocalDatenascido=LocalDate.parse("1961-07-18");if(nascido.compareTo(nascido)<0);{longdiferencaEmMeses=ChronoUnit.MONTHS.between(nascido,hj);//System.out.println("Tem " + diferencaEmMeses /12 +" anos e " + diferencaEmMeses %12 + " meses");JOptionPane.showMessageDialog(null,diferencaEmMeses/12);}}}
A
AbaClar
Sim eu sei esse roda, o outro que deve correr num JFrame é que não compila, parece que não encontra a variável diferencaEmMeses.
D
Douglas-Silva
posta o código desse outro então, que vai rodar no JFrame
A
AbaClar
importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.time.*;importjava.time.temporal.ChronoUnit;publicclassTesteCxaTextextendsJFrame{publicTesteCxaText(){setLayout(null);setSize(260,200);setLocationRelativeTo(null);setTitle("CALCULAR IDADE");JLabellblDisplay=newJLabel("Tem 55 anos e 08 meses");lblDisplay.setHorizontalAlignment(JLabel.CENTER);JButtonbtCalcula=newJButton("Calcular");JButtonbtSair=newJButton("Fechar");JTextFieldtxtNascido=newJTextField(" ");getContentPane().add(lblDisplay).setBounds(20,20,220,30);getContentPane().add(txtNascido).setBounds(20,60,220,30);getContentPane().add(btCalcula).setBounds(20,100,100,30);getContentPane().add(btSair).setBounds(140,100,100,30);setVisible(true);btSair.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});btCalcula.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){LocalDatehj=LocalDate.now();LocalDatenascido=LocalDate.parse(txtNascido.getText());if(nascido.compareTo(nascido)<0);{longage=ChronoUnit.MONTHS.between(nascido,hj);}// lblDisplay.setText("Tem " + age /12 +" anos e " + age %12 + " meses");JOptionPane.showMessageDialog(null,age/12);}});}publicstaticvoidmain(String[]args){newTesteCxaText();}}
importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.time.*;importjava.time.temporal.ChronoUnit;publicclassTesteCxaTextextendsJFrame{publicTesteCxaText(){setLayout(null);setSize(260,200);setLocationRelativeTo(null);setTitle("CALCULAR IDADE");JLabellblDisplay=newJLabel("Tem 55 anos e 08 meses");lblDisplay.setHorizontalAlignment(JLabel.CENTER);JButtonbtCalcula=newJButton("Calcular");JButtonbtSair=newJButton("Fechar");JTextFieldtxtNascido=newJTextField(" ");getContentPane().add(lblDisplay).setBounds(20,20,220,30);getContentPane().add(txtNascido).setBounds(20,60,220,30);getContentPane().add(btCalcula).setBounds(20,100,100,30);getContentPane().add(btSair).setBounds(140,100,100,30);setVisible(true);btSair.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});btCalcula.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){LocalDatehj=LocalDate.now();LocalDatenascido=LocalDate.parse(txtNascido.getText());longage=0;if(nascido.compareTo(nascido)<0);{age=ChronoUnit.MONTHS.between(nascido,hj);}// lblDisplay.setText("Tem " + age /12 +" anos e " + age %12 + " meses");JOptionPane.showMessageDialog(null,age/12);}});}publicstaticvoidmain(String[]args){newTesteCxaText();}}
O que é que você tem que passar pra esse “LocalDate.parse(txtNascido.getText());” pra ele funcionar? Eu vi que precisa ser um formato específico de data que seu usuário terá que digitar, é isso? Que tipo de coisa ele precisa digitar exatamente?
A
AbaClar
Isto é para inserir noutro formulário ao inserir a data de nascimento do cliente, um label mostra a idade em anos e meses. A forma como a data é inserida, preferencialmente dd/MM/yyyy. Obrigado
D
Douglas-Silva1 like
Já resolvi, seu usuário precisará digitar uma data no formato “dd/MM/yyyy” como “20/07/1945”:
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;importjava.time.temporal.ChronoUnit;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JTextField;publicclassTesteCxaTextextendsJFrame{publicTesteCxaText(){setLayout(null);setSize(260,200);setLocationRelativeTo(null);setTitle("CALCULAR IDADE");JLabellblDisplay=newJLabel("Tem 55 anos e 08 meses");lblDisplay.setHorizontalAlignment(JLabel.CENTER);JButtonbtCalcula=newJButton("Calcular");JButtonbtSair=newJButton("Fechar");JTextFieldtxtNascido=newJTextField(" ");getContentPane().add(lblDisplay).setBounds(20,20,220,30);getContentPane().add(txtNascido).setBounds(20,60,220,30);getContentPane().add(btCalcula).setBounds(20,100,100,30);getContentPane().add(btSair).setBounds(140,100,100,30);setVisible(true);btSair.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});btCalcula.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){LocalDatehj=LocalDate.now();StringdataDeNascimento=txtNascido.getText();dataDeNascimento=dataDeNascimento.replaceAll(" ","");LocalDatenascido=LocalDate.parse(dataDeNascimento,DateTimeFormatter.ofPattern("dd/MM/yyyy"));longage=0;if(nascido.compareTo(nascido)<0);{age=ChronoUnit.MONTHS.between(nascido,hj);}// lblDisplay.setText("Tem " + age /12 +" anos e " + age %12 + " meses");JOptionPane.showMessageDialog(null,age/12);}});}publicstaticvoidmain(String[]args){newTesteCxaText();}}
Se é isso, marca a resposta como “aceita” e dá um click em curtir