srananmang
Gebruiker
- Lid geworden
- 10 mei 2011
- Berichten
- 59
MVC in Java rekenmachine
YES!!!!
Ik heb de calculator compleet met MVC, arrays hahaha Hij doet het ook nog goed genoeg.
Nu heb ik een laatste verzoek...
Dit ga ik nu ff doorlezen in het boek en ff kijken hoe dit te doen is.
Mijn laatste onderdeel(dan ben ik echt!!! klaaar!!) is een TRY/CATCH in zetten. Hierbij wil ik dat op het scherm voor ongeveer 10 seconden bij elke operator verschillende tekst komt. Een soort pauze, alsof de rekenmachine meot nadenken over het berekenen van de opgave.
Zoals ik toets 4 x 9 = --> dan komt er in het uitkomst vak " Wow, gaan we vermenigvuldigen, wacht ff hier ben ik niet zo goed in!!! " en na 10 sec. laat het de uitkomst zien...
Wie enkele iedeen heeft graag Ik ga nu lezen en kijken of ik zelf iets kan creeren
Alvast bedankt....
Srananmang
Main klasse:
Model:
View:
Control:
YES!!!!
Ik heb de calculator compleet met MVC, arrays hahaha Hij doet het ook nog goed genoeg.
Nu heb ik een laatste verzoek...
Dit ga ik nu ff doorlezen in het boek en ff kijken hoe dit te doen is.
Mijn laatste onderdeel(dan ben ik echt!!! klaaar!!) is een TRY/CATCH in zetten. Hierbij wil ik dat op het scherm voor ongeveer 10 seconden bij elke operator verschillende tekst komt. Een soort pauze, alsof de rekenmachine meot nadenken over het berekenen van de opgave.
Zoals ik toets 4 x 9 = --> dan komt er in het uitkomst vak " Wow, gaan we vermenigvuldigen, wacht ff hier ben ik niet zo goed in!!! " en na 10 sec. laat het de uitkomst zien...
Wie enkele iedeen heeft graag Ik ga nu lezen en kijken of ik zelf iets kan creeren
Alvast bedankt....
Srananmang
Main klasse:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Rekenmachine extends JFrame
{
public static void main( String[] args )
{
/* Maak een frame*/
JFrame frame = new Rekenmachine () ;
frame.setSize( 500, 500 ) ;
frame.setLocationRelativeTo(null) ;
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) ;
frame.setTitle( "Game" ) ;
frame.setContentPane( new RekenPaneel()) ;
frame.setVisible( true ) ;
}
}
class RekenPaneel extends JPanel
{
private RekenModel model;
private RekenVC view;
private RekenC control;
public RekenPaneel()
{
setLayout( new BorderLayout() );
model = new RekenModel( true, true, true, true, true,
true, true, true, true, true,
true, true, true, true, true);
view = new RekenVC( model );
control = new RekenC( model, view );
add( view, BorderLayout.NORTH );
add( control, BorderLayout.CENTER );
}
}
Model:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RekenModel
{
private boolean setNummer, setPlus, setNul, setMin, setMaal,
setDelen, setIs, setNummerF, setPlusF, setMinF,
setMaalF, setLeegF, setDelenF, setIsF, setClearF;
private boolean startnr = true;
private String uitkomst = "0";
private String funnytekst = "";
private String laatsteInvoer = null;
private String vorigenr = "=";
private double voorResultaat = 0;
private double vervolgResultaat = 0;
private double resultaat;
public RekenModel( boolean setNummer, boolean setPlus, boolean setNul,
boolean setMin, boolean setMaal, boolean setDelen,
boolean setIs, boolean setNummerF, boolean setPlusF,
boolean setMinF, boolean setMaalF, boolean setLeegF,
boolean setDelenF, boolean setIsF, boolean setClearF)
{
this.setNummer = setNummer;
this.setPlus = setPlus;
this.setNul = setNul;
this.setMin = setMin;
this.setMaal = setMaal;
this.setDelen = setDelen;
this.setIs = setIs;
this.setNummerF = setNummerF;
this.setPlusF = setPlusF;
this.setMinF = setMinF;
this.setMaalF = setMaalF;
this.setLeegF = setLeegF;
this.setDelenF = setDelenF;
this.setIsF = setIsF;
this.setClearF = setClearF;
}
public void zet(String no)
{
if(uitkomst.equals("0"))
{
uitkomst = no;
}
else if( laatsteInvoer=="=")
{
uitkomst = no;
laatsteInvoer=null;
}
else
{
uitkomst = uitkomst + no;
}
}
/*uitkomst*/
public String setNummer(String no)
{
zet(no);
return uitkomst;
}
public String setNul()
{
zet("0");
return uitkomst;
}
public String setPlus()
{
voorResultaat = Double.parseDouble(uitkomst);
laatsteInvoer ="+";
uitkomst = "";
return uitkomst;
}
public String setMin()
{
voorResultaat = Double.parseDouble(uitkomst);
laatsteInvoer ="-";
uitkomst = "";
return uitkomst;
}
public String setMaal()
{
voorResultaat = Double.parseDouble(uitkomst);
laatsteInvoer ="*";
uitkomst = "";
return uitkomst;
}
public String setDelen()
{
voorResultaat = Double.parseDouble(uitkomst);
laatsteInvoer ="/";
uitkomst = "";
return uitkomst;
}
public String setIs()
{
vervolgResultaat=Double.parseDouble(uitkomst);
if (laatsteInvoer.equals("/"))
resultaat = voorResultaat/vervolgResultaat;
if (laatsteInvoer.equals("*"))
resultaat = voorResultaat*vervolgResultaat;
if (laatsteInvoer.equals("-"))
resultaat = voorResultaat-vervolgResultaat;
if (laatsteInvoer.equals("+"))
resultaat = voorResultaat+vervolgResultaat;
/* Dit is er om te checken of de waarden vast worden gehouden*/
System.out.println(""+voorResultaat+" "+resultaat+"");
uitkomst = " "+resultaat;
laatsteInvoer="=";
return uitkomst;
}
/*Funnytekst*/
public String setNummerF(String no)
{
return no;
}
public String setPlusF()
{
funnytekst = "Dat je hier een rekenmachine voor nodig hebt...";
return funnytekst;
}
public String setMinF()
{
funnytekst = "Lukt dit niet uit het hoofd?";
return funnytekst;
}
public String setMaalF()
{
funnytekst = "En we gaan vermenigvuldigen!";
return funnytekst;
}
public String setLeegF()
{
funnytekst = "ERROR, START PC OPNIEUW OP";
return funnytekst;
}
public String setDelenF()
{
funnytekst = "Door wat gaan we het delen?";
return funnytekst;
}
public String setIsF()
{
funnytekst = "Is dit antwoord wel juist?";
return funnytekst;
}
public String setClearF()
{
funnytekst = "Zo ff een leeg veld";
return funnytekst;
}
public String setClear()
{
uitkomst = "0";
return uitkomst;
}
}
View:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RekenVC extends JPanel
{
/*voeg alles toe*/
private RekenModel model;
JTextField tekstvak = new JTextField("Welkom! Bij de surinaamse rekenmachine van 'BiG$mOkE...",5);
JTextField uitkomst = new JTextField("0",5);
/* In de RekenPaneel maak ik de buttons aan in een GridLayout en deze komen in verschillende JPanels
*die ik in de BorderLayout plaats,aan de Buttons en TextFields zitten actionlisteners en een knophandler voor de funny tekst*/
public RekenVC(RekenModel model)
{
this.model = model;
this .setLayout(new GridLayout(2, 1));
uitkomst .setEditable(false);
uitkomst .setHorizontalAlignment( SwingConstants.CENTER );
uitkomst .setBackground(new Color(147, 1, 20));
uitkomst .setForeground(new Color(250, 250, 250));
tekstvak .setEditable(false);
tekstvak .setHorizontalAlignment( SwingConstants.CENTER );
tekstvak .setBackground(new Color(147, 1, 20));
tekstvak .setForeground(new Color(250, 250, 250));
this .add(uitkomst);
this .add(tekstvak);
}
public void toonUitkomst (String getal)
{
uitkomst.setText(getal);
}
public void toonFunnytekst (String funnytekst)
{
tekstvak.setText(funnytekst);
}
}
Control:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RekenC extends JPanel
{
private RekenModel model;
private RekenVC view;
public Color goud;
public JButton Clear, is, plus, min, delen, maal, leeg, nul;
public JButton[] nummersArray = new JButton[9];
public String[] namen = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
public String[] namenFunny = {"een", "twee", "drie", "vier", "vijf", "zes", "zeven", "acht", "negen"};
public RekenC( RekenModel model, RekenVC view )
{
this.model = model;
this.view = view;
setLayout (new BorderLayout());
goud = new Color ( 147, 147, 0 );
KnopHandler aap = new KnopHandler();
CijferHandler calc = new CijferHandler();
ClearListener clear = new ClearListener();
JPanel paneelcijfers = new JPanel();
paneelcijfers .setLayout(new GridLayout(4, 3));
for(int i = 0; i < 9; i++)
{
nummersArray[i] = new JButton(namen[i]);
nummersArray[i] .addActionListener(calc);
nummersArray[i] .addActionListener(aap);
paneelcijfers.add(nummersArray[i]);
}
nummersArray[0] .setBackground(goud);
nummersArray[2] .setBackground(goud);
nummersArray[4] .setBackground(goud);
nummersArray[6] .setBackground(goud);
nummersArray[8] .setBackground(goud);
paneelcijfers.add(leeg = new JButton("" ));
leeg .addActionListener(aap);
paneelcijfers.add(nul = new JButton("0"));
nul .addActionListener(calc);
nul .setBackground(goud);
paneelcijfers.add(Clear = new JButton("C"));
Clear .addActionListener(aap);
Clear .addActionListener(clear);
JPanel paneelkeuze = new JPanel();
paneelkeuze .setLayout(new GridLayout(4, 1));
paneelkeuze.add(plus = new JButton("+"));
paneelkeuze.add(min = new JButton("-"));
paneelkeuze.add(maal = new JButton("x"));
paneelkeuze.add(delen = new JButton(":"));
min .setBackground(goud);
delen .setBackground(goud);
plus .addActionListener(calc);
min .addActionListener(calc);
maal .addActionListener(calc);
delen .addActionListener(calc);
plus .addActionListener(aap);
min .addActionListener(aap);
maal .addActionListener(aap);
delen .addActionListener(aap);
JPanel paneelis = new JPanel();
paneelis .setLayout(new GridLayout(1, 1));
paneelis .add(is = new JButton("="));
paneelis .setBackground(goud);
is .addActionListener(calc);
is .addActionListener(aap);
add(paneelcijfers,BorderLayout.CENTER);
add(paneelis,BorderLayout.SOUTH);
add(paneelkeuze, BorderLayout.EAST);
}
/* Elke nummer krijgt hier een waarde en wanneer je op het nummer klikt krijgt het nummer de waarde van zijn knop */
class CijferHandler implements ActionListener
{
public void actionPerformed(ActionEvent invoer)
{
for(int i = 0; i < 9; i++)
if(invoer.getSource()==nummersArray[i])
{
view.toonUitkomst(model.setNummer(namen[i]));
}
if(invoer.getSource()==nul)
{
view.toonUitkomst(model.setNul());
}
if(invoer.getSource()==plus)
{
view.toonUitkomst(model.setPlus());
}
if(invoer.getSource()==min)
{
view.toonUitkomst(model.setMin());
}
if(invoer.getSource()==maal)
{
view.toonUitkomst(model.setMaal());
}
if(invoer.getSource()==delen)
{
view.toonUitkomst(model.setDelen());
}
if(invoer.getSource()==is)
{
view.toonUitkomst(model.setIs());
}
}
}
/* Hier maak ik de KnopHandler aan voor de funny teksten */
class KnopHandler implements ActionListener
{
public void actionPerformed(ActionEvent funny)
{
for(int i = 0; i < 9; i++)
if(funny.getSource()==nummersArray[i])
{
view.toonFunnytekst(model.setNummerF(namenFunny[i]));
}
if(funny.getSource()==plus)
{
view.toonFunnytekst(model.setPlusF());
}
if(funny.getSource()==min)
{
view.toonFunnytekst(model.setMinF());
}
if(funny.getSource()==maal)
{
view.toonFunnytekst(model.setMaalF());
}
if(funny.getSource()==leeg)
{
view.toonFunnytekst(model.setLeegF());
}
if(funny.getSource()==delen)
{
view.toonFunnytekst(model.setDelenF());
}
if(funny.getSource()==is)
{
view.toonFunnytekst(model.setIsF());
}
if(funny.getSource()==Clear)
{
view.toonFunnytekst(model.setClearF());
}
}
}
/* Om de tekstvak schoon te vegen */
class ClearListener implements ActionListener
{
public void actionPerformed(ActionEvent schoon)
{
if(schoon.getSource()==Clear)
{
view.toonUitkomst(model.setClear());
}
}
}
}
Bijlagen
Laatst bewerkt: