romeodelta
Gebruiker
- Lid geworden
- 26 apr 2014
- Berichten
- 5
Ben bezig met oefening 4.1 pag 132, van het boek java de basis. Dit is een uitbreiding op 3.7 pag 119
3.7 is een programma dat de dag weergeeft na een ingevulde datum.
Voorbeeld: je vult in 14-9-2013
Antwoord: De dag na 14-9-2013 is 15-9-2013
Programma met 3 klassen.
Klasse 1: venster (canvas)
Klasse 2: paneel
Klasse 3: een klasse die kalender gegevens bepaald
- Klasse 2 haalt gegevens uit klasse 3 enz enz.
Echter nu wordt er gevraagd dat de uitkomst wordt gedisplayed met een dagnaam.
Antwoord: De dag na 14-9-2013 is maandag 15-9-2013
Gegeven is een PSD:
Ik heb alle 3 klassen geplaatst.
Vanuit het PSD moet je een stukje code kloppen, maar welke precies weet ik niet en waar ook niet.
Dus wie kan me helpen klasse 3 kalendergegevens te maken? Ik gebruik eclipse als editor.
Klasse 1:
Klasse 2:
Klasse 3:
3.7 is een programma dat de dag weergeeft na een ingevulde datum.
Voorbeeld: je vult in 14-9-2013
Antwoord: De dag na 14-9-2013 is 15-9-2013
Programma met 3 klassen.
Klasse 1: venster (canvas)
Klasse 2: paneel
Klasse 3: een klasse die kalender gegevens bepaald
- Klasse 2 haalt gegevens uit klasse 3 enz enz.
Echter nu wordt er gevraagd dat de uitkomst wordt gedisplayed met een dagnaam.
Antwoord: De dag na 14-9-2013 is maandag 15-9-2013
Gegeven is een PSD:
Ik heb alle 3 klassen geplaatst.
Vanuit het PSD moet je een stukje code kloppen, maar welke precies weet ik niet en waar ook niet.
Dus wie kan me helpen klasse 3 kalendergegevens te maken? Ik gebruik eclipse als editor.
Klasse 1:
Code:
package h03vb37volgendedag3kdagvandeweek;
import javax.swing.*;
import javax.swing.JFrame;
// Omschrijving programma:
// Voorbeeld 3.7 volgende dag
// Invoervelden: dag maand jaar in nummerieke vorm
// Uitvoervelden: een tekst die meldt wat de volgende dag is.
public class Volgendedag extends JFrame //class
{
public Volgendedag() //method
{
JFrame venster = new JFrame();
venster.setSize(350,250); // afmeting venster = 300 horizontaal en 250 verticaal
venster.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);// exit on close
venster.setTitle("Bepaal volgende dag"); // titel in venster
venster.setLocation(500,500); // locatie venster
//-----link naar Btwnpaneel.java-------------------------------------------------------------
JPanel hoofdpaneel = new Volgendedagpaneel(); // a
venster.add(hoofdpaneel); // b
// a & b mogen ook worden genoteerd als:
// venster.add(new Etikettenpaneel() );
//----------------------------------------------------------------------------------------------
venster.setVisible(true); //bouw progamma eerst op en display dan het venster pas
}
public static void main (String [] args) // main method
{
new Volgendedag(); //voer uit method: public Etiketten()
}
}
Klasse 2:
Code:
package h03vb37volgendedag3kdagvandeweek;
import javax.swing.*;
import java.awt.event.*;
//Omschrijving programma:
//Voorbeeld 3.7 volgende dag
//Invoervelden: dag maand jaar in nummerieke vorm
//Uitvoervelden: een tekst die meldt wat de volgende dag is.
public class Volgendedagpaneel extends JPanel implements ActionListener //class
{
private JTextField dagVeld, maandVeld, jaarVeld; // tekstField
private JButton berekenKnop; // knop
private JTextField resultaatVeld; // tekstField
// Maak paneel met invoervelden en berekenknop
public Volgendedagpaneel() //method
{
// maak element voor paneel
add(new JLabel("Dag"));
dagVeld = new JTextField("14",2);
add (dagVeld);
add(new JLabel("Maand"));
maandVeld = new JTextField("9",2);
add (maandVeld);
add(new JLabel("Jaar"));
jaarVeld = new JTextField("2013",2);
add (jaarVeld);
berekenKnop = new JButton ("de volgende dag?");
berekenKnop.addActionListener(this);
add (berekenKnop);
resultaatVeld = new JTextField (23);
add(resultaatVeld);
}
// bereken de volgende dag en maak een tekst
public String maakResultaattekst (int dag, int maand, int jaar)
{
if(bestaanbareDatum(dag,maand,jaar))
{
Kalendergegevens kalendervraagbaak = new Kalendergegevens(); // code verwijst naar andere klasse
String resultaat = " De dag na " + dag + "-" + maand + "-" + jaar + " is ";
dag++;
if (dag > kalendervraagbaak.getAantalDagenInMaand(maand, jaar)) // code verwijst naar andere klasse
{ // nieuwe maand
dag = 1;
maand++;
if (maand >12)
{
//nieuw jaar
maand = 1;
jaar++;
}
}
return resultaat + dag + "-" + maand + "-" + jaar;
}
else return "Ongeldige datum";
}
// public int AantalDagenInMaand (int maand, int jaar) // code ververplaatst naar andere klasse
// {
//
// }
// public boolean isSchrikkeljaar(int jaartal // code ververplaatst naar andere klasse
// {
//
// }
private boolean bestaanbareDatum(int dag,int maand, int jaar)
{
return ((jaar >= 1582) && (maand > 0) && (maand < 13) && (dag > 0) && (dag < 32));
}
// haal gegevens op uit de velden en laat een resultaattekst maken: toon resultaattekst
public void actionPerformed(ActionEvent e)
{
int invoerdag = Integer.parseInt(dagVeld.getText());
int invoermaand = Integer.parseInt(maandVeld.getText());
int invoerjaar = Integer.parseInt(jaarVeld.getText());
String resultaat = maakResultaattekst (invoerdag,invoermaand,invoerjaar);
resultaatVeld.setText(resultaat);
}
}
Klasse 3:
Code:
package h03vb37volgendedag3kdagvandeweek;
public class Kalendergegevens
{
// geef het aantal dagen van de meegegeven maand in het meegegeven jaar
public int getAantalDagenInMaand (int maand, int jaar)
{
final int APRIL=4, JUNI=6, SEPTEMBER=9,NOVEMBER=11;
final int FEBRUARI=2;
int aantalDagen = 31; // geldt voor de meeste maanden
if (maand == APRIL || maand == JUNI || maand == SEPTEMBER || maand == NOVEMBER)
{
aantalDagen = 30;
}
else if (maand == FEBRUARI)
{
aantalDagen = 28;
if (isSchrikkeljaar(jaar))
{
aantalDagen = 29;
}
}
return aantalDagen;
}
public String dagVanDeWeek( int maand, int dag, int jaar, int maandag, int dinsdag, int woensdag, int donderdag, int vrijdag, int zaterdag, int zondag)
{
if(bestaanbareDatum(dag,maand,jaar))
{
String resultaat = " De dag na " + dag + "-" + maand + "-" + jaar + " is ";
if (maand >2)
{
maand = maand -2;
}
else
maand = maand +10;
jaar = jaar -1;
}
}
return resultaat + dag + "-" + maand + "-" + jaar;
}
else return "Ongeldige datum";
}
//bepaal of het meegegeven jaartal een schrikkeljaar is
public boolean isSchrikkeljaar (int jaarTal)
{
return ((jaarTal%4==0) && (jaarTal%100!=0) || (jaarTal%400 ==0));
}
//bepaal of het meegegeven datum bestaat
private boolean bestaanbareDatum(int dag,int maand, int jaar)
{
return ((jaar >= 1582) && (maand > 0) && (maand < 13) && (dag > 0) && (dag < 32));
}
}
Laatst bewerkt: