Hallo,
ich schreibe derzeit ein elektronisches Kochbuch. Ich bin fast fertig damit, allerdings stehte ich jetzt vor einem Problem. In der MainFrame Klasse, kann ich über ein JMenu ein newRezeptFrame aufrufen. In diesem ist ein Button, dieser schließt das Fenster wieder und erstellt mit den eingegeben Daten ein neues Rezept.
Soweit ist alles geregelt. Nun habe ich allerdings das Problem, dass in der MainFrame Klasse die Variable rezeptListe steht. Diese ist vom Typ ArrayList<Rezept>, da wir ja "Rezepte" einfügen wollen.
Wie kann ich nun das neue Rezept in diese Liste einfügen. Da ich eine gesamte Liste mit allen rezepten haben will, die ich dann sortieren oder nach rezepten bzw. Kategorien suchen kann.
Ich habe den Quellcode etwas gekürzt, da sonst das Forum gesprengt worden wäre
newRezeptFrame
In der Klasse newRezeptJFrame funktionier die Zeile 311 nicht, das ist mein einziges Problem.
ich könnte natürlich die von der JFrame Klasser erben, aber dann erstelle ich zusätzlich ein neues JFrame und ich speicher das nicht in die eigentliche RezeptListe hinein.
Wenn jemand noch die Klassen Rezept, RezeptListe, Zutat, ZutatenListe gepostet haben will um es zu testen, werde ich das tun.
lg AdelJaha174
ich schreibe derzeit ein elektronisches Kochbuch. Ich bin fast fertig damit, allerdings stehte ich jetzt vor einem Problem. In der MainFrame Klasse, kann ich über ein JMenu ein newRezeptFrame aufrufen. In diesem ist ein Button, dieser schließt das Fenster wieder und erstellt mit den eingegeben Daten ein neues Rezept.
Soweit ist alles geregelt. Nun habe ich allerdings das Problem, dass in der MainFrame Klasse die Variable rezeptListe steht. Diese ist vom Typ ArrayList<Rezept>, da wir ja "Rezepte" einfügen wollen.
Wie kann ich nun das neue Rezept in diese Liste einfügen. Da ich eine gesamte Liste mit allen rezepten haben will, die ich dann sortieren oder nach rezepten bzw. Kategorien suchen kann.
Ich habe den Quellcode etwas gekürzt, da sonst das Forum gesprengt worden wäre
Java:
package MainPackage;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class MainFrame{
//Author AdelJaha174
/**
* @param args
*/
private JFrame MainFrame;
private JPanel centerPanel;
public ArrayList<Rezept> rezeptArrayList;
private JLabel EinführungLabel;
private JLabel PictureLabel;
private JMenuBar menubar;
private JMenu menu_datei;
private JMenu menu_extras;
private JMenu menu_hilfe;
private JMenuItem menu_datei_rezepte;
private JMenuItem menu_datei_neu;
private JMenuItem menu_datei_rezepte_suchen;
private JMenuItem menu_datei_rezepte_alle;
private JMenuItem menu_datei_suchen_rezept;
private JMenuItem menu_datei_suchen_kategorie;
private JMenuItem menu_extras_chrono;
private JMenuItem menu_hilfe_hilfe;
private JMenuItem menu_hilfe_about;
public MainFrame()
{
MainFrame = new JFrame("Frisch auf den Tisch");
MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rezeptArrayList = new ArrayList<Rezept>();
//Menübar wird erstellt
menubar = new JMenuBar();
//Menüs werden ertsellt
menu_datei = new JMenu("Datei");
menu_extras = new JMenu("Extras");
menu_hilfe = new JMenu("Hilfe");
//Untermenüs für Datei werden erstellt
menu_datei_neu = new JMenuItem("Neues Rezept erstellen");
menu_datei_rezepte = new JMenu("Rezepte");
//Untermenüs für Rezepte werden erstellt
menu_datei_rezepte_suchen = new JMenu("Suchen");
menu_datei_rezepte_alle = new JMenuItem("Alle Rezepte");
//Untermenüs für Suchen werden erstellt
menu_datei_suchen_rezept = new JMenuItem("Rezept");
menu_datei_suchen_kategorie = new JMenuItem("Kategorie");
//Untermenüs für Extras werden erstellt
menu_extras_chrono = new JMenuItem("Chronometrer");
//Untermenüs für Hilfe werden erstellt
menu_hilfe_hilfe = new JMenuItem("Hilfe");
menu_hilfe_about = new JMenuItem("About");
//Untermenüs werden zu Datei hinzugefügt
menu_datei.add(menu_datei_rezepte);
menu_datei.add(menu_datei_neu);
//Untermenüs werden zu Rezepte hinzugefügt
menu_datei_rezepte.add(menu_datei_rezepte_alle);
menu_datei_rezepte.add(menu_datei_rezepte_suchen);
//Untermenüs werden zu Suchen hinzugefügt
menu_datei_rezepte_suchen.add(menu_datei_suchen_rezept);
menu_datei_rezepte_suchen.add(menu_datei_suchen_kategorie);
//Untermenüs werden zu Extras hinzugefügt
menu_extras.add(menu_extras_chrono);
//Untermenüs werden zu Hilfe hinzugefügt
menu_hilfe.add(menu_hilfe_hilfe);
menu_hilfe.add(menu_hilfe_about);
//Menüs werden zu Menübar hinzugefügt
menubar.add(menu_datei);
menubar.add(menu_extras);
menubar.add(menu_hilfe);
//ActionListener für die Untermenüs
menu_datei_neu.addActionListener(new datei_neuActionListener());
MainFrame.getContentPane().setLayout(new BorderLayout(0,0));
centerPanel = new JPanel();
centerPanel.setBackground(Color.WHITE);
centerPanel.setLayout(new GridBagLayout());
EinführungLabel = new JLabel("<HTML><BODY><u>Einleitung : </u>" +
"<BR>" +
"<BR>" +
"Willkommen bei FadT dem elektronischen Kochbuch.<BR>" +
"FadT ist ein Multifunktionskochbuch,<BR>" +
"von Fisch- und Fleischgerichten bis hin zu Salaten und <BR>" +
"vegetarischer Küche, finden sie hier alles.<BR>" +
"Sie können Rezepte nachkochen oder aber auch eigene erstellen.<BR>" +
"Wir hoffen, dass Sie viel Spaß an diesem Kochbuch finden werden.</BODY></HTML>");
EinführungLabel.setFont(new Font("Times New Roman",0,14));
GridBagConstraints leftConstraints = new GridBagConstraints();
leftConstraints.insets = new Insets(0,0,150,0);
leftConstraints.anchor = new GridBagConstraints().WEST;
Icon Icon = new ImageIcon(getClass().getResource("koch.jpg"));
PictureLabel = new JLabel(Icon);
GridBagConstraints rightConstraints = new GridBagConstraints();
rightConstraints.anchor = new GridBagConstraints().NORTH;
centerPanel.add(EinführungLabel,leftConstraints);
centerPanel.add(PictureLabel,rightConstraints);
MainFrame.getContentPane().add(BorderLayout.CENTER,centerPanel);
MainFrame.getContentPane().add(BorderLayout.NORTH,menubar);
MainFrame.pack();
MainFrame.setResizable(false);
MainFrame.setVisible(true);
//Platziert das Menü
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int w = MainFrame.getWidth();
int h = MainFrame.getHeight();
int x = (d.width-w)/4;
int y = (d.height-h)/4;
MainFrame.setLocation(x,y);
}
public static class datei_neuActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
NewRezeptFrame newRezeptFrame = new NewRezeptFrame();
}
}
public static void main(String[] args) {
MainFrame Menu = new MainFrame();
}
}
newRezeptFrame
Java:
package MainPackage;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class NewRezeptFrame{
private JFrame newRezeptFrame;
private JPanel newRezeptPanel;
private ArrayList<Zutat> zutatenArrayList = new ArrayList<Zutat>();
//Objekte der linken Seite
private JLabel gerichtLabel;
private JComboBox gerichtComboBox;
private JLabel zutatenLabel;
private JTextField mengeTextField;
private JLabel mengeLabel;
private JTextField einheitTextField;
private JLabel einheitLabel;
private JTextField produktTextField;
private JLabel produktLabel;
private JButton hinzufügenButton;
private JList zutatenJList;
//Objekte der rechten Seite
private JLabel nameLabel;
private JTextField nameTextField;
private JLabel warningsLabel;
private JLabel zubereitungLabel;
private JTextArea zubereitungTextArea;
//Fertigstellen des Rezepts
private JButton fertigstellenButton;
public NewRezeptFrame()
{
//Erzeugung des Frames
newRezeptFrame = new JFrame();
newRezeptFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
newRezeptFrame.setLayout(new GridLayout(1,1));
//Panel für das Frame
newRezeptPanel = new JPanel();
newRezeptPanel.setLayout(new GridBagLayout());
//Layout Manager
gerichtLabel = new JLabel("Gericht :");
gerichtLabel.setPreferredSize(new Dimension(140,14));
GridBagConstraints left1 = new GridBagConstraints();
left1.gridx = 0;
left1.gridy = 0;
left1.gridwidth = 2;
left1.gridheight = 1;
left1.insets = new Insets(9,10,0,0);
left1.anchor = GridBagConstraints.SOUTHWEST;
//ComboBox füllen
String comboBoxListe[] = {"","Salate","Eiergerichte","Suppen und Eintöpfe","",
"Fisch und Meeresfrüchte","Geflügel","Fleisch und Wild","",
"Gemüse","Kartoffeln","",
"Reis","Teigwaren","",
"Nachspeisen"};
gerichtComboBox = new JComboBox(comboBoxListe);
gerichtComboBox.setPreferredSize(new Dimension(140,20));
GridBagConstraints left2 = new GridBagConstraints();
left2.gridx = 0;
left2.gridy = 1;
left2.gridwidth = 2;
left2.gridheight = 1;
left2.insets = new Insets(9,10,0,0);
left2.anchor = GridBagConstraints.SOUTHWEST;
zutatenLabel = new JLabel("Zutaten :");
zutatenLabel.setPreferredSize(new Dimension(140,14));
GridBagConstraints left3 = new GridBagConstraints();
left3.gridx = 0;
left3.gridy = 2;
left3.gridwidth = 2;
left3.gridheight = 1;
left3.insets = new Insets(12,10,0,0);
left3.anchor = GridBagConstraints.SOUTHWEST;
mengeTextField = new JTextField();
mengeTextField.setPreferredSize(new Dimension(99,20));
GridBagConstraints left4 = new GridBagConstraints();
left4.gridx = 0;
left4.gridy = 3;
left4.gridwidth = 1;
left4.gridheight = 1;
left4.insets = new Insets(9,10,0,0);
left4.anchor = GridBagConstraints.NORTHWEST;
mengeLabel = new JLabel("Menge");
mengeLabel.setPreferredSize(new Dimension(37,20));
mengeLabel.setFont(new Font("",0,10));
GridBagConstraints left5 = new GridBagConstraints();
left5.gridx = 1;
left5.gridy = 3;
left5.gridwidth = 1;
left5.gridheight = 1;
left5.insets = new Insets(9,4,0,0);
left5.anchor = GridBagConstraints.SOUTHWEST;
einheitTextField = new JTextField();
einheitTextField.setPreferredSize(new Dimension(99,20));
GridBagConstraints left6 = new GridBagConstraints();
left6.gridx = 0;
left6.gridy = 4;
left6.gridwidth = 1;
left6.gridheight = 1;
left6.insets = new Insets(9,10,0,0);
left6.anchor = GridBagConstraints.NORTHWEST;
einheitLabel = new JLabel("Einheit");
einheitLabel.setPreferredSize(new Dimension(37,20));
einheitLabel.setFont(new Font("",0,10));
GridBagConstraints left7 = new GridBagConstraints();
left7.gridx = 1;
left7.gridy = 4;
left7.gridwidth = 1;
left7.gridheight = 1;
left7.insets = new Insets(9,4,0,0);
left7.anchor = GridBagConstraints.SOUTHWEST;
produktTextField = new JTextField();
produktTextField.setPreferredSize(new Dimension(99,20));
GridBagConstraints left8 = new GridBagConstraints();
left8.gridx = 0;
left8.gridy = 5;
left8.gridwidth = 1;
left8.gridheight = 1;
left8.insets = new Insets(9,10,0,0);
left8.anchor = GridBagConstraints.NORTHWEST;
produktLabel = new JLabel("Produkt");
produktLabel.setPreferredSize(new Dimension(37,20));
produktLabel.setFont(new Font("",0,10));
GridBagConstraints left9 = new GridBagConstraints();
left9.gridx = 1;
left9.gridy = 5;
left9.gridwidth = 1;
left9.gridheight = 1;
left9.insets = new Insets(9,4,0,0);
left9.anchor = GridBagConstraints.SOUTHWEST;
hinzufügenButton = new JButton("Hinzufügen");
hinzufügenButton.setPreferredSize(new Dimension(110,20));
GridBagConstraints left10 = new GridBagConstraints();
left10.gridx = 0;
left10.gridy = 6;
left10.gridwidth = 2;
left10.gridheight = 1;
left10.insets = new Insets(9,10,0,0);
left10.anchor = GridBagConstraints.NORTHEAST;
hinzufügenButton.addActionListener(new hinzufügenButtonListener());
zutatenJList = new JList();
zutatenJList.setPreferredSize(new Dimension(140,252));
GridBagConstraints left11 = new GridBagConstraints();
left11.gridx = 0;
left11.gridy = 7;
left11.gridwidth = 2;
left11.gridheight = 1;
left11.insets = new Insets(12,10,11,0);
left11.anchor = GridBagConstraints.NORTHEAST;
nameLabel = new JLabel("Name :");
nameLabel.setPreferredSize(new Dimension(140,14));
GridBagConstraints right1 = new GridBagConstraints();
right1.gridx = 2;
right1.gridy = 0;
right1.gridwidth = 1;
right1.gridheight = 1;
right1.insets = new Insets(9,20,0,0);
right1.anchor = GridBagConstraints.NORTHWEST;
nameTextField = new JTextField();
nameTextField.setPreferredSize(new Dimension(140,20));
GridBagConstraints right2 = new GridBagConstraints();
right2.gridx = 2;
right2.gridy = 1;
right2.gridwidth = 1;
right2.gridheight = 1;
right2.insets = new Insets(9,20,0,0);
right2.anchor = GridBagConstraints.NORTHWEST;
warningsLabel = new JLabel("Fügen Sie alle Zutaten der Reihe nach ein, sowie die Zubereitung");
warningsLabel.setPreferredSize(new Dimension(372,14));
GridBagConstraints right3 = new GridBagConstraints();
right3.gridx = 3;
right3.gridy = 1;
right3.gridwidth = 1;
right3.gridheight = 1;
right3.insets = new Insets(9,20,0,0);
right3.anchor = GridBagConstraints.NORTHWEST;
zubereitungLabel = new JLabel("Zubereitung :");
zubereitungLabel.setPreferredSize(new Dimension(140,14));
GridBagConstraints right4 = new GridBagConstraints();
right4.gridx = 2;
right4.gridy = 2;
right4.gridwidth = 1;
right4.gridheight = 1;
right4.insets = new Insets(9,20,0,0);
right4.anchor = GridBagConstraints.NORTHWEST;
zubereitungTextArea = new JTextArea();
zubereitungTextArea.setPreferredSize(new Dimension(532,371));
GridBagConstraints right5 = new GridBagConstraints();
right5.gridx = 2;
right5.gridy = 3;
right5.gridwidth = 2;
right5.gridheight = 5;
right5.insets = new Insets(9,20,11,8);
right5.anchor = GridBagConstraints.NORTHWEST;
fertigstellenButton = new JButton("Rezept speichern");
fertigstellenButton.setPreferredSize(new Dimension(410,20));
GridBagConstraints bottom1 = new GridBagConstraints();
bottom1.gridx = 2;
bottom1.gridy = 10;
bottom1.gridwidth = 2;
bottom1.gridheight = 1;
bottom1.insets = new Insets(11,20,11,0);
fertigstellenButton.addActionListener(new fertigstellenButtonListener());
newRezeptPanel.add(gerichtLabel,left1);
newRezeptPanel.add(gerichtComboBox,left2);
newRezeptPanel.add(zutatenLabel,left3);
newRezeptPanel.add(mengeTextField,left4);
newRezeptPanel.add(mengeLabel,left5);
newRezeptPanel.add(einheitTextField,left6);
newRezeptPanel.add(einheitLabel,left7);
newRezeptPanel.add(produktTextField,left8);
newRezeptPanel.add(produktLabel,left9);
newRezeptPanel.add(hinzufügenButton,left10);
newRezeptPanel.add(zutatenJList,left11);
newRezeptPanel.add(nameLabel,right1);
newRezeptPanel.add(nameTextField,right2);
newRezeptPanel.add(warningsLabel,right3);
newRezeptPanel.add(zubereitungLabel,right4);
newRezeptPanel.add(zubereitungTextArea,right5);
newRezeptPanel.add(fertigstellenButton,bottom1);
newRezeptFrame.add(newRezeptPanel);
//Ändert Hintergrundfarbe des Panels
Color color = new Color(220,220,220);
newRezeptPanel.setBackground(color);
//Platziert das Menü
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
newRezeptFrame.setLocation(d.width/4,d.height/4);
newRezeptFrame.pack();
newRezeptFrame.setVisible(true);
newRezeptFrame.setResizable(false);
}
public class hinzufügenButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int menge = Integer.valueOf(mengeTextField.getText());
String einheit = einheitTextField.getText();
String produkt = produktTextField.getText();
zutatenArrayList.add(new Zutat(menge,einheit,produkt));
zutatenJList.setListData(zutatenArrayList.toArray());
}
}
public class fertigstellenButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String zubereitung = zubereitungTextArea.getText();
String name = nameTextField.getText();
//erstellt einen String mit den Zutaten
String zutaten = "<HTML><BODY>";
for(int i=0;i<zutatenArrayList.size();i++)
{
String s = zutatenArrayList.get(i).toString();
zutaten = zutaten + s;
zutaten = zutaten + "<BR>";
}
zutaten = zutaten +"</BODY></HTML>";
int comboboxindex = gerichtComboBox.getSelectedIndex();
Object s = gerichtComboBox.getItemAt(comboboxindex);
String l = String.valueOf(s);
Rezept neuesrezept = new Rezept(zutaten,l,zubereitung,name);
rezeptArrayList.add(neuesrezept);
newRezeptFrame.dispose();
}
}
}
In der Klasse newRezeptJFrame funktionier die Zeile 311 nicht, das ist mein einziges Problem.
ich könnte natürlich die von der JFrame Klasser erben, aber dann erstelle ich zusätzlich ein neues JFrame und ich speicher das nicht in die eigentliche RezeptListe hinein.
Wenn jemand noch die Klassen Rezept, RezeptListe, Zutat, ZutatenListe gepostet haben will um es zu testen, werde ich das tun.
lg AdelJaha174
Zuletzt bearbeitet: