Salve ho fatto una classe Data che vuole (giorno mese,anno) con due metodi
bisestile() : che dice se l'anno è bisestile (anche se c'è un errore perchè gli anni %100 che non sono anni%400 non sono bisestili).
addgiorni(giornidaaggiungere): che restituisce la data aggiungendo i giorni.
Questa è la classe:
codice:
public class Data {
private int giorno,mese,anno ;
public Data(int giorno, int mese, int anno) {
super();
this.giorno = giorno;
this.mese = mese;
this.anno = anno;
}
public int get_mese(){
return mese;
}
public String bisestile(){
String year ;
if (anno%4==0 && anno%400==0){
year="E' bisestile";
}
else{
year="Non è bisestile";
}
return year;
}
public void addDay(int giorni){
giorno =giorno +giorni;
if(mese==1 || mese ==3 || mese ==5 ||mese ==7 ||mese==8 ||mese ==10 ||mese ==12){
if(giorno>31){
mese=mese+1;
if(mese>12){
anno =anno+1;
mese = mese - 12 ;
}
giorno= giorno-31;
}
}
else if(mese==4 || mese ==6 || mese ==9 ||mese ==11){
if(giorno>30){
mese=mese+1;
giorno= giorno-30;
}
}
else if(mese==2){
if(bisestile().equals("E' bisestile")){
if(giorno>29){
mese=mese+1;
giorno= giorno-29;
}
}
else{
if(giorno>28){
mese=mese+1;
giorno= giorno-28;
}
}
}
System.out.println("Aggiungeno i giorni la data diventa :" + giorno+ " " + mese +" "+anno+".");
}
Questa è la classe ProvaData:
codice:
public class ProvaData {
public static void main(String[] args) {
Data d=new Data(1,2,2000);
System.out.println(d.bisestile());
d.addDay(35);
}
}
tutto funziona ....
ora vorrei utilizzarla tramite jframe con windows builder ho fatto :
codice:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class FinestraProvaData extends Data {
private JFrame frmDataAggiungiGiorni;
private JTextField txgiorno;
private JTextField txmese;
private JTextField txanno;
private JTextField txgiorniadd;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FinestraProvaData window = new FinestraProvaData();
window.frmDataAggiungiGiorni.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public FinestraProvaData() {
super( giorno, mese, anno);
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmDataAggiungiGiorni = new JFrame();
frmDataAggiungiGiorni.setTitle("Data Aggiungi Giorni");
frmDataAggiungiGiorni.setBounds(100, 100, 450, 300);
frmDataAggiungiGiorni.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmDataAggiungiGiorni.getContentPane().setLayout(null);
JLabel lblGiorno = new JLabel("Giorno");
lblGiorno.setBounds(28, 38, 56, 15);
frmDataAggiungiGiorni.getContentPane().add(lblGiorno);
JLabel lblMese = new JLabel("Mese");
lblMese.setBounds(150, 38, 50, 15);
frmDataAggiungiGiorni.getContentPane().add(lblMese);
txgiorno = new JTextField();
txgiorno.setColumns(10);
txgiorno.setBounds(91, 36, 56, 19);
frmDataAggiungiGiorni.getContentPane().add(txgiorno);
txmese = new JTextField();
txmese.setColumns(10);
txmese.setBounds(195, 36, 56, 19);
frmDataAggiungiGiorni.getContentPane().add(txmese);
txanno = new JTextField();
txanno.setColumns(10);
txanno.setBounds(313, 36, 56, 19);
frmDataAggiungiGiorni.getContentPane().add(txanno);
JLabel lblAnno = new JLabel("Anno");
lblAnno.setBounds(265, 38, 56, 15);
frmDataAggiungiGiorni.getContentPane().add(lblAnno);
JLabel lblInserireGiorniDa = new JLabel("Inserire Giorni da aggiungere alla data");
lblInserireGiorniDa.setBounds(28, 104, 281, 15);
frmDataAggiungiGiorni.getContentPane().add(lblInserireGiorniDa);
txgiorniadd = new JTextField();
txgiorniadd.setBounds(313, 102, 50, 19);
frmDataAggiungiGiorni.getContentPane().add(txgiorniadd);
txgiorniadd.setColumns(10);
JButton btnDimmiSe = new JButton("Dimmi se è bisestile e dimmi la nuva data");
btnDimmiSe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int g=Integer.parseInt(txgiorno.getText());
int m=Integer.parseInt(txmese.getText());
int a=Integer.parseInt(txanno.getText());
int gadd=Integer.parseInt(txgiorniadd.getText());
Data d=new Data(g,m,a);
JOptionPane.showMessageDialog(frmDataAggiungiGiorni, txgiorno.getText()+d.bisestile()+"La Nuova Data è:");
}
});
btnDimmiSe.setBounds(48, 168, 340, 25);
frmDataAggiungiGiorni.getContentPane().add(btnDimmiSe);
}
}
Ora il bottone dovrebbe aprire una finestra e dirmi se l'anno è bisestile e la nuova data , i problemi sono 2 per utilizzare i metodi di Data ho dovuto estendere la classe FinestraProvaData ma ho problemi con il costruttore di super , inoltre non so copme usare il metodo addday() perchè eseguo un System.out.println quando avrei invece bisogno che mi restituisse tre int da utilizzare nella finestra del risultato.