Moinmoin!
Ich versuche gerade mich etwas in MVC einzuarbeiten.
Als Beispiel würde ich gerne über eine GUI Personen anlegen, welche dann in einem zweiten Fenster in einer Tabelle aufgeführt werden.
Bis auf den Controller habe ich m.M.n. alles zusammen:
Controller:
Main:
Modell:
KundenAnlegenView:
KundenAnzeigenView:
Person:
PersonVerwaltung:
Mein Problem ist jetzt, dass
1) die Methode addListener nicht aus dem Konsruktor im Controller aufgerufen werden kann
2) ich nicht weiß, wie ich die Methoden setKundenAnzeigenView, setKundenAnlegenView und die Listener aufbauen muss.
Ich hoffe ihr könnt mir helfen!
THX!
Ich versuche gerade mich etwas in MVC einzuarbeiten.
Als Beispiel würde ich gerne über eine GUI Personen anlegen, welche dann in einem zweiten Fenster in einer Tabelle aufgeführt werden.
Bis auf den Controller habe ich m.M.n. alles zusammen:
Controller:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mvc;
import mvc.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
*
* @author Fishmasta
*/
public class Controller {
private Modell _modell;
private KundenAnlegenView _kundenAnlegenView;
private KundenAnzeigenView _kundenAnzeigenView;
public Controller(Modell model, KundenAnlegenView kundenAnlegenView, KundenAnzeigenView kundenAnzeigenView) {
this._modell = model;
this._kundenAnlegenView = kundenAnlegenView;
this._kundenAnzeigenView = kundenAnzeigenView;
addListener();
}
private void addListender(){
this._kundenAnlegenView.setKundenAnlegenListener(new kundenAnlegenListener());
this._kundenAnzeigenView.setKundenAnzeigenListener(new kundenAnzeigenListener());
}
class kundenAnlegenListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
}
Main:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mvc;
import mvc.*;
/**
*
* @author Fishmasta
*/
public class Main {
static Controller controller;
static Modell modell;
static KundenAnlegenView kundenAnlegenView;
static KundenAnzeigenView kundenAnzeigenView;
public static void main(String[] args) {
modell = new Modell();
kundenAnlegenView = new KundenAnlegenView();
kundenAnzeigenView = new KundenAnzeigenView();
controller = new Controller();
kundenAnlegenView.setVisible(true);
kundenAnzeigenView.setVisible(true);
}
}
Modell:
Java:
package mvc;
import mvc.Controller;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Modell{
private ArrayList<Person> personenListe;
int maxDatensatzNummer;
public Modell()
{
personenListe=new ArrayList<Person>();
}
public String[][] datenToStringArray()
{
String[][] s=new String[5][personenListe.size()];
for (int i=0;i<personenListe.size();i++)
{
s[i][0]=Integer.toString(personenListe.get(i).getID());
s[i][1]=personenListe.get(i).getName();
s[i][2]=personenListe.get(i).getVorname();
s[i][3]=personenListe.get(i).getGeschlecht();
}
return s;
}
public ArrayList<Person> getDaten()
{
return personenListe;
}
public int getMaxDatensatzNummer()
{
return maxDatensatzNummer;
}
public void add(Person p)
{
maxDatensatzNummer++;
p.setID(maxDatensatzNummer);
personenListe.add(p);
}
public void consolenAusgabe()
{
System.out.println("Nr.: \t Name \t Vorname \t Geschlecht");
for (int i=0;i<personenListe.size();i++)
{
System.out.println(personenListe.get(i).getID()+"\t"+ personenListe.get(i).getName()+"\t"+personenListe.get(i).getVorname()+"\t"+personenListe.get(i).getGeschlecht());
}
}
public void speichernAlsCSV()
{
try
{
FileWriter fw=new FileWriter("e:/daten.csv");
BufferedWriter bw=new BufferedWriter(fw);
for (int i=0;i<personenListe.size();i++)
{
//System.out.println(personenListe.get(i).getID()+";"+ personenListe.get(i).getName()+";"+personenListe.get(i).getVorname()+";"+personenListe.get(i).getGeschlecht()+";");
bw.write(personenListe.get(i).getID()+";"+ personenListe.get(i).getName()+";"+personenListe.get(i).getVorname()+";"+personenListe.get(i).getGeschlecht()+";");
bw.newLine();
}
bw.close();
fw.close();
}
catch ( IOException e )
{
System.out.println("Datei-Fehler...");
}
}
public void ladenAusCSV(String pfad)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(pfad)));
String inhalt;
String[] array=new String[10];
boolean dateiLeer=true;
while((inhalt=in.readLine())!= null)
{
//Zeile wird am ";" aufgeteilt und in ein array geschrieben
array=inhalt.split(";");
//System.out.println(array[0]+" - " +array[1]+" - " +array[2]+" - " +array[3]);
Person p=new Person(array[1],array[2],array[3]);
p.setID(Integer.parseInt(array[0]));
personenListe.add(p);
dateiLeer=false;
}
if (dateiLeer==true) maxDatensatzNummer=0;
else maxDatensatzNummer=Integer.parseInt(array[0]);
}
catch ( IOException e )
{
System.out.println("Datei-Fehler...");
}
}
/*public void addObserver(AnzeigenView a) {
}*/
}
KundenAnlegenView:
Java:
package mvc;
import java.awt.GridLayout;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JRadioButton;
public class KundenAnlegenView extends JFrame{
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel jLabelID = null;
private JLabel jLabelName = null;
private JLabel jLabelVorname = null;
private JLabel jLabelGeschlecht = null;
private JLabel jLabel4 = null;
private JLabel jLabelStrasse = null;
private JLabel jLabelPlz = null;
private JLabel jLabelWohnort = null;
private JLabel jLabelTelefon = null;
private JLabel jLabelIDWert = null;
private JTextField jTextFieldName = null;
private JTextField jTextFieldVorname = null;
private JTextField jTextFieldPlz = null;
private JTextField jTextFieldStrasse = null;
private JTextField jTextFieldWohnort = null;
private JTextField jTextFieldTelefon = null;
private JButton jButtonUebernehmen = null;
private JButton jButtonVerwerfen = null;
private JRadioButton jRadioButtonMann = null;
private JRadioButton jRadioButtonFrau = null;
private ButtonGroup buttonGroupGeschlecht=null; // @jve:decl-index=0:
/**
* This is the default constructor
*/
public KundenAnlegenView() {
super();
initialize();
this.setVisible(true);
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 350);
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("Kunden anlegen");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabelIDWert = new JLabel();
jLabelIDWert.setText("");
jLabelTelefon = new JLabel();
jLabelTelefon.setText("Tel.-Nr.");
jLabelWohnort = new JLabel();
jLabelWohnort.setText("Wohnort");
jLabelPlz = new JLabel();
jLabelPlz.setText("Postleitzahl");
jLabelStrasse = new JLabel();
jLabelStrasse.setText("Stra�e");
jLabel4 = new JLabel();
jLabel4.setText("");
jLabelGeschlecht = new JLabel();
jLabelGeschlecht.setText("Geschlecht");
jLabelVorname = new JLabel();
jLabelVorname.setText("Vorname");
jLabelName = new JLabel();
jLabelName.setText("Name");
jLabelID = new JLabel();
jLabelID.setText("ID");
jContentPane = new JPanel();
jContentPane.setLayout(new GridLayout(10,2));
jContentPane.add(jLabelID, null);
jContentPane.add(jLabelIDWert, null);
jContentPane.add(jLabelName, null);
jContentPane.add(getJTextFieldName(), null);
jContentPane.add(jLabelVorname, null);
jContentPane.add(getJTextFieldVorname(), null);
jContentPane.add(jLabelGeschlecht, null);
jContentPane.add(getJRadioButtonMann(), null);
jContentPane.add(jLabel4, null);
jContentPane.add(getJRadioButtonFrau(), null);
jContentPane.add(jLabelStrasse, null);
jContentPane.add(getJTextFieldStrasse(), null);
jContentPane.add(jLabelPlz, null);
jContentPane.add(getJTextFieldPlz(), null);
jContentPane.add(jLabelWohnort, null);
jContentPane.add(getJTextFieldWohnort(), null);
jContentPane.add(jLabelTelefon, null);
jContentPane.add(getJTextFieldTelefon(), null);
jContentPane.add(getJButtonUebernehmen(), null);
jContentPane.add(getJButtonVerwerfen(), null);
buttonGroupGeschlecht=new ButtonGroup();
buttonGroupGeschlecht.add(jRadioButtonMann);
buttonGroupGeschlecht.add(jRadioButtonFrau);
}
return jContentPane;
}
/**
* This method initializes jTextFieldName
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldName() {
if (jTextFieldName == null) {
jTextFieldName = new JTextField();
}
return jTextFieldName;
}
/**
* This method initializes jTextFieldVorname
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldVorname() {
if (jTextFieldVorname == null) {
jTextFieldVorname = new JTextField();
}
return jTextFieldVorname;
}
/**
* This method initializes jTextFieldPlz
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldPlz() {
if (jTextFieldPlz == null) {
jTextFieldPlz = new JTextField();
}
return jTextFieldPlz;
}
/**
* This method initializes jTextFieldStrasse
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldStrasse() {
if (jTextFieldStrasse == null) {
jTextFieldStrasse = new JTextField();
}
return jTextFieldStrasse;
}
/**
* This method initializes jTextFieldWohnort
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldWohnort() {
if (jTextFieldWohnort == null) {
jTextFieldWohnort = new JTextField();
}
return jTextFieldWohnort;
}
/**
* This method initializes jTextFieldTelefon
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldTelefon() {
if (jTextFieldTelefon == null) {
jTextFieldTelefon = new JTextField();
}
return jTextFieldTelefon;
}
/**
* This method initializes jButtonUebernehmen
*
* @return javax.swing.JButton
*/
private JButton getJButtonUebernehmen() {
if (jButtonUebernehmen == null) {
jButtonUebernehmen = new JButton();
jButtonUebernehmen.setText("�bernehmen");
jButtonUebernehmen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String geschlecht;
if (jRadioButtonFrau.isSelected()) geschlecht="weiblich";
else if (jRadioButtonMann.isSelected()) geschlecht="m�nnlich";
else geschlecht="keine Angabe";
}
});
}
return jButtonUebernehmen;
}
/**
* This method initializes jButtonVerwerfen
*
* @return javax.swing.JButton
*/
private JButton getJButtonVerwerfen() {
if (jButtonVerwerfen == null) {
jButtonVerwerfen = new JButton();
jButtonVerwerfen.setText("Verwerfen");
jButtonVerwerfen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
felderLoeschen();}
});
}
return jButtonVerwerfen;
}
/**
* This method initializes jRadioButtonMann
*
* @return javax.swing.JRadioButton
*/
private JRadioButton getJRadioButtonMann() {
if (jRadioButtonMann == null) {
jRadioButtonMann = new JRadioButton();
jRadioButtonMann.setText("m�nnlich");
}
return jRadioButtonMann;
}
/**
* This method initializes jRadioButtonFrau
*
* @return javax.swing.JRadioButton
*/
private JRadioButton getJRadioButtonFrau() {
if (jRadioButtonFrau == null) {
jRadioButtonFrau = new JRadioButton();
jRadioButtonFrau.setText("weiblich");
}
return jRadioButtonFrau;
}
public void felderLoeschen()
{
jTextFieldName.setText("");
jTextFieldVorname.setText("");
buttonGroupGeschlecht.clearSelection();
jTextFieldStrasse.setText("");
jTextFieldPlz.setText("");
jTextFieldWohnort.setText("");
jTextFieldTelefon.setText("");
}
} // @jve:decl-index=0:visual-constraint="15,4"
KundenAnzeigenView:
Java:
package mvc;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import java.awt.Rectangle;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class KundenAnzeigenView extends JFrame{
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JScrollPane jScrollPane = null;
private JTable jTable = null;
/**
* This is the default constructor
*/
public KundenAnzeigenView() {
super();
initialize();
this.setVisible(true);
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(400, 200);
this.setContentPane(getJContentPane());
this.setTitle("Kunden anzeigen");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJScrollPane(), null);
}
return jContentPane;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(0, 0, 400, 200));
jScrollPane.setViewportView(getJTable());
}
return jScrollPane;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
String[] tabellenTitle = new String[]{"ID", "Name", "Vorname", "Geschlecht"};
DefaultTableModel defaultTableModel = new DefaultTableModel(tabellenTitle, 10);
jTable.setModel(defaultTableModel);
}
return jTable;
}
} // @jve:decl-index=0:visual-constraint="10,10"
Person:
Java:
package mvc;
class Person
{
private int ID;
private String name;
private String vorname;
private String geschlecht;
private String geburtsdatum;
private int plz;
private String strasse;
private String wohnort;
private String telefonnummer;
public Person()
{
this.name="";
this.vorname="";
this.geschlecht="";
}
public Person(String name, String vorname, String geschlecht)
{
this.name=name;
this.vorname=vorname;
this.geschlecht=geschlecht;
}
public void consolenAusgabe()
{
System.out.println("Name: "+name);
System.out.println("Vorname: "+vorname);
System.out.println("Geschlecht: "+geschlecht);
}
public void setID(int ID)
{
this.ID=ID;
}
public int getID()
{
return ID;
}
public String getName()
{
return name;
}
public String getVorname()
{
return vorname;
}
public String getGeschlecht()
{
return geschlecht;
}
}
PersonVerwaltung:
Java:
package mvc;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class PersonenVerwaltung{
private ArrayList<Person> personenListe;
int maxDatensatzNummer;
public PersonenVerwaltung()
{
personenListe=new ArrayList<Person>();
}
public String[][] datenToStringArray()
{
String[][] s=new String[5][personenListe.size()];
for (int i=0;i<personenListe.size();i++)
{
s[i][0]=Integer.toString(personenListe.get(i).getID());
s[i][1]=personenListe.get(i).getName();
s[i][2]=personenListe.get(i).getVorname();
s[i][3]=personenListe.get(i).getGeschlecht();
}
return s;
}
public ArrayList<Person> getDaten()
{
return personenListe;
}
public int getMaxDatensatzNummer()
{
return maxDatensatzNummer;
}
public void add(Person p)
{
maxDatensatzNummer++;
p.setID(maxDatensatzNummer);
personenListe.add(p);
}
public void consolenAusgabe()
{
System.out.println("Nr.: \t Name \t Vorname \t Geschlecht");
for (int i=0;i<personenListe.size();i++)
{
System.out.println(personenListe.get(i).getID()+"\t"+ personenListe.get(i).getName()+"\t"+personenListe.get(i).getVorname()+"\t"+personenListe.get(i).getGeschlecht());
}
}
public void speichernAlsCSV()
{
try
{
FileWriter fw=new FileWriter("e:/daten.csv");
BufferedWriter bw=new BufferedWriter(fw);
for (int i=0;i<personenListe.size();i++)
{
//System.out.println(personenListe.get(i).getID()+";"+ personenListe.get(i).getName()+";"+personenListe.get(i).getVorname()+";"+personenListe.get(i).getGeschlecht()+";");
bw.write(personenListe.get(i).getID()+";"+ personenListe.get(i).getName()+";"+personenListe.get(i).getVorname()+";"+personenListe.get(i).getGeschlecht()+";");
bw.newLine();
}
bw.close();
fw.close();
}
catch ( IOException e )
{
System.out.println("Datei-Fehler...");
}
}
public void ladenAusCSV(String pfad)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(pfad)));
String inhalt;
String[] array=new String[10];
boolean dateiLeer=true;
while((inhalt=in.readLine())!= null)
{
//Zeile wird am ";" aufgeteilt und in ein array geschrieben
array=inhalt.split(";");
//System.out.println(array[0]+" - " +array[1]+" - " +array[2]+" - " +array[3]);
Person p=new Person(array[1],array[2],array[3]);
p.setID(Integer.parseInt(array[0]));
personenListe.add(p);
dateiLeer=false;
}
if (dateiLeer==true) maxDatensatzNummer=0;
else maxDatensatzNummer=Integer.parseInt(array[0]);
}
catch ( IOException e )
{
System.out.println("Datei-Fehler...");
}
}
}
Mein Problem ist jetzt, dass
1) die Methode addListener nicht aus dem Konsruktor im Controller aufgerufen werden kann
2) ich nicht weiß, wie ich die Methoden setKundenAnzeigenView, setKundenAnlegenView und die Listener aufbauen muss.
Ich hoffe ihr könnt mir helfen!
THX!