Hallo,
Kan mij iemand helpen met hetvolgende probleem aub?
Sorry voor de vele code, ik hoop dat het nu niet onduidelijk wordt.
Aangezien deze opdracht met MVC patroon werkt zal ik ze ook als volgt presenteren.
Eerst mijn model
Dit zijn 2 klassen, maar 1 van de 2 is slechts foutafhandeling.
Klasse TestModel:
Klasse TooSmallException
Zo, nu de views.
dit bestaat uit 3 panels die elk in een aparte klasse zitten. Deze komen samen op een Frame, (dit is ook een aparte klasse) die de mainklasse bevat.
Klasse KnoppenPanel
Klasse SpinnerPanel
Klasse OutputPanel
Klasse MainFrame
Nu nog enkel de controllers.
Deze moeten ook in externe klassen komen, en daar wringt het schoentje een beetje.
De enige klasse die me lukt is de ExitListener voor de Cancel knop, en die ziet er als volgt uit.
Nu is het verder de bedoeling dat als ik je spinners instel op verschillende waarden, en ik druk dan op Genereer, de text in de textarea veranderd. Maar dit lukt me niet.
De klassen moeten afzonderlijk blijven, en de listeners moeten in aparte klassen staan.
Kan hier iemand mij mee helpen aub?
mvg
Sven
Kan mij iemand helpen met hetvolgende probleem aub?
Sorry voor de vele code, ik hoop dat het nu niet onduidelijk wordt.
Aangezien deze opdracht met MVC patroon werkt zal ik ze ook als volgt presenteren.
Eerst mijn model
Dit zijn 2 klassen, maar 1 van de 2 is slechts foutafhandeling.
Klasse TestModel:
Code:
/**
*
*/
package testprogramma.model;
/**
* @author ikke
*
*/
public class TestModel {
private int aantalMensen;
private int maxLeeftijd;
private String uit;
public TestModel(int m, int l) throws TooSmallException {
if (m < 1) {
throw new TooSmallException("Het moeten er minstens één zijn.");
}
if (l <= 0)
{
throw new TooSmallException("Leeftijd moet groter dan nul zijn.");
}
this.aantalMensen = m;
this.maxLeeftijd = l;
}
public void GenereerData () {
this.uit = "Er zijn " + this.aantalMensen + " mensen, met een maximum leeftijd van " + this.maxLeeftijd + " jaar";
System.out.println(this.uit);
}
public void setAantalMensen(int m) throws TooSmallException {
if (m < 1) {
throw new TooSmallException("Het moeten er minstens één zijn.");
}
this.aantalMensen = m;
}
public int getAantalMensen() {
return this.aantalMensen;
}
public void setMaxLeeftijd (int l) throws TooSmallException {
if (l <= 0)
{
throw new TooSmallException("Leeftijd moet groter dan nul zijn.");
}
this.maxLeeftijd = l;
}
public int getMaxLeeftijd() {
return this.maxLeeftijd;
}
public String Oplossing() {
return this.uit;
}
/**
* Commandline versie
* @param args
* @throws TooSmallException
*/
public static void main(String[] args) throws TooSmallException {
TestModel test = new TestModel(25, 60);
test.GenereerData();
}
}
Klasse TooSmallException
Code:
package testprogramma.model;
public class TooSmallException extends Exception {
/**
* Constructor voor een NegativeValueException.
* @param errorTekst een String met een pasende omschrijving
* van de situatie.
*/
public TooSmallException(String errorTekst){
super(errorTekst);
}
}
Zo, nu de views.
dit bestaat uit 3 panels die elk in een aparte klasse zitten. Deze komen samen op een Frame, (dit is ook een aparte klasse) die de mainklasse bevat.
Klasse KnoppenPanel
Code:
/**
*
*/
package testprogramma.view;
import javax.swing.JButton;
import javax.swing.JPanel;
import testprogramma.controllers.Exitlistener;
/**
* @author ikke
* klasse die 2 knopjes aanmaakt.
*
*/
public class KnoppenPanel extends JPanel {
//aanmaken van de knoppen
private JButton btnGenereerData;
private JButton btnCancel;
public KnoppenPanel() {
//declareren van de knoppen
this.btnGenereerData = new JButton("Genereren");
this.btnCancel = new JButton("Cancel");
//toevoegen aan de panel
this.add(this.btnGenereerData);
this.add(this.btnCancel);
//listener van de Cancel knop
this.btnCancel.addActionListener(new Exitlistener());
}
}
Klasse SpinnerPanel
Code:
/**
*
*/
package testprogramma.view;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
/**
* @author ikke
* klasse die 2 spinners aanmaakt
*
*/
public class SpinnerPanel extends JPanel {
//aanmaken van de spinners
private JSpinner spnrMensen;
private JSpinner spnrLeeftijd;
//aanmaken van de labels
private JLabel lblMensen;
private JLabel lblLeeftijd;
public SpinnerPanel() {
//declareren van de spinners met bijhorende labels en instellen van de spinners
this.lblMensen = new JLabel("Aantal mensen");
this.lblLeeftijd = new JLabel("Maximum leeftijd");
this.spnrMensen = new JSpinner();
this.spnrLeeftijd = new JSpinner();
this.spnrMensen.setModel(new SpinnerNumberModel(100, 1, 1000, 1));
this.spnrLeeftijd.setModel(new SpinnerNumberModel(60, 0, 120, 1));
//toevoegen aan de panel
this.add(this.lblMensen);
this.add(this.spnrMensen);
this.add(this.lblLeeftijd);
this.add(this.spnrLeeftijd);
}
}
Klasse OutputPanel
Code:
/**
*
*/
package testprogramma.view;
import javax.swing.JPanel;
import javax.swing.JTextArea;
/**
* @author ikke
* Klasse die de output laat zien in een textarea
*
*/
public class OutputPanel extends JPanel {
private JTextArea output;
public OutputPanel() {
//declareren van de textarea
this.output = new JTextArea("Hier moet de string in komen die door het model gegenereerd wordt.");
//toevoegen aan de panel
this.add(this.output);
}
}
Klasse MainFrame
Code:
/**
*
*/
package testprogramma.view;
import java.awt.BorderLayout;
import javax.swing.JFrame;
/**
* @author ikke
* klasse die 3 panels op een JFrame zet, bevat ook mainklasse
*
*/
public class MainFrame extends JFrame {
//atributen aanmaken
private KnoppenPanel knopjes = new KnoppenPanel();
private SpinnerPanel spinners = new SpinnerPanel();
private OutputPanel uit = new OutputPanel();
public MainFrame(String titel) {
super(titel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocation(200, 200);
//toevoegen van de panels
this.add(this.knopjes, BorderLayout.SOUTH);
this.add(this.uit, BorderLayout.CENTER);
this.add(this.spinners, BorderLayout.NORTH);
//alles samenvoegen en ervoor zorgen dat er aan de frame niets veranderd kan worden
this.pack();
this.setResizable(false);
this.setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
new MainFrame("Dit is slechts een voorbeeld.");
}
}
Nu nog enkel de controllers.
Deze moeten ook in externe klassen komen, en daar wringt het schoentje een beetje.
De enige klasse die me lukt is de ExitListener voor de Cancel knop, en die ziet er als volgt uit.
Code:
/**
*
*/
package testprogramma.controllers;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author ikke
*
*/
public class Exitlistener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Alle taken worden gestopt en de toepassing wordt afgesloten");
System.exit(0);
}
}
Nu is het verder de bedoeling dat als ik je spinners instel op verschillende waarden, en ik druk dan op Genereer, de text in de textarea veranderd. Maar dit lukt me niet.
De klassen moeten afzonderlijk blijven, en de listeners moeten in aparte klassen staan.
Kan hier iemand mij mee helpen aub?
mvg
Sven
Laatst bewerkt: