Hallo miteinander
Ich schaffe es hier nicht meine JComboBox mit den Werten (cocktailnamen) zu füllen. Könnt Ihr mir hier weiterhelfen?
Ich vermute es liegt an der Methode getName() das scheint nicht zu funktionieren.
Vielen Dank Sophie
Gespeichert werden die Cocktails hier:
Ich schaffe es hier nicht meine JComboBox mit den Werten (cocktailnamen) zu füllen. Könnt Ihr mir hier weiterhelfen?
Ich vermute es liegt an der Methode getName() das scheint nicht zu funktionieren.
Vielen Dank Sophie
Code:
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JTextField;
public class CocktailsAusgebenListener implements ItemListener {
private MeinCocktailMixerGUI mixer;
private JTextField nameText;
/**
* Konstruktor.
* @param meinCocktailMixerGUI
*/
public CocktailsAusgebenListener(MeinCocktailMixerGUI mixer) {
this.mixer = mixer;
}
@Override
public void itemStateChanged(ItemEvent e) {
JComboBox selectedChoice = (JComboBox)e.getSource();
if ( selectedChoice.getSelectedItem().equals("Ende") )
System.exit( 0 );
}
public JTextField getName(JTextField name) {
this.nameText = name;
return name;
}
}
Code:
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.TitledBorder;
public class CocktailsAusgebenPanel extends JPanel{
//Listener für Events
private CocktailsAusgebenListener listener1;
// String[] lang = { getName() } ;
/**
* Konstruktor. Erzeugt eine grafische Komponente
* @param listener1
*/
public CocktailsAusgebenPanel(CocktailsAusgebenListener listener1) {
this.listener1 = listener1;
// Das Layout wird mit Hilfe eines Boxlayouts realisiert
// BoxLayout.Y_Axis bewirkt eine vertikale Anordnung der
// Komponenten
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
this.add(Box.createVerticalGlue());
// Das Label sollte nicht die ganze Breite füllen.
// Dafür wird eine horizonalte Box erzeugt
// In die Box kommt flexibler leerer Raum und dann das Label
// Danach wird die Box in dem Panel hinzugefügt
Box nameLabelBox = Box.createHorizontalBox();
nameLabelBox.add(Box.createHorizontalGlue());
JLabel nameLabel = new JLabel("Cocktail");
// nameLabel links anordnen
nameLabel.setAlignmentX(SwingConstants.LEFT);
groesseEinsetzen(nameLabel, 585, 20);
nameLabelBox.add(nameLabel);
this.add(nameLabelBox);
// Die ComboBox soll nicht die ganze Breite füllen.
// Dafuer wird eine horizontale Box erzeugt.
// In die Box kommt leerer Raum, dann die ComboBox
// und noch ein leerer Raum
// Dann wird die Box in das Panel eingefügt.
Box nameTextFieldBox = Box.createHorizontalBox();
nameTextFieldBox.add(Box.createHorizontalGlue());
JComboBox jbox = new JComboBox();
nameTextFieldBox.add(jbox);
groesseEinsetzen(jbox, 490, 20);
jbox.setAlignmentX(SwingConstants.LEFT);
nameTextFieldBox.add(new JCheckBox("alkoholfrei"));
nameTextFieldBox.add(Box.createHorizontalGlue());
this.add(nameTextFieldBox);
JTextField JTextField = null;
listener1.getName(JTextField);
// Fester Abstand oberhalb des Listen-Panels
this.add(Box.createRigidArea(new Dimension(0, 10)));
// Box erzeugen, welche das Listen-Panel enthält
Box zutatenPanelBox = Box.createHorizontalBox();
// Vor und nach dem Panel wird flexibler Abstand (Glue) eingefügt
zutatenPanelBox.add(Box.createHorizontalGlue());
JPanel pZutat = erzeugeListenPanel();
zutatenPanelBox.add(pZutat);
zutatenPanelBox.add(Box.createHorizontalGlue());
this.add(zutatenPanelBox);
// Fester Abstand unterhalb des Zutaten-Panels
this.add(Box.createRigidArea(new Dimension(0, 10)));
// Label für Zubereitung
Box zubereitungLabelBox = Box.createHorizontalBox();
zubereitungLabelBox.add(Box.createHorizontalGlue());
JLabel zubereitungLabel = new JLabel("Zubereitung");
// zubereitungLabel links anordnen
zubereitungLabel.setAlignmentX(SwingConstants.LEFT);
groesseEinsetzen(zubereitungLabel, 585, 20);
zubereitungLabelBox.add(zubereitungLabel);
this.add(zubereitungLabelBox);
// zubereitungTextAreaBox wird wie nameTextFieldBox behandelt
Box zubereitungTextAreaBox = Box.createHorizontalBox();
zubereitungTextAreaBox.add(Box.createHorizontalGlue());
JTextArea zubereitungTextArea = new JTextArea();
JScrollPane scrollZubereitung = new JScrollPane(zubereitungTextArea);
groesseEinsetzen(scrollZubereitung, 580, 50);
scrollZubereitung.setAlignmentX(SwingConstants.LEFT);
zubereitungTextAreaBox.add(scrollZubereitung);
zubereitungTextAreaBox.add(Box.createHorizontalGlue());
this.add(zubereitungTextAreaBox);
// Abstand unterer Rand
this.add(Box.createVerticalGlue());
jbox.addItem(getName());
/* for ( String s : lang )
jbox.addItem( s );
jbox.addItemListener( new ItemListener() {
public void itemStateChanged( ItemEvent e ) {
JComboBox selectedChoice = (JComboBox)e.getSource();
if ( selectedChoice.getSelectedItem().equals("Ende") )
System.exit( 0 );
}
} );*/
}
/**
* Methode für das Panel Zutaten
*
* @return listenPanel
*/
public JPanel erzeugeListenPanel() {
JPanel listenPanel = new JPanel();
// Panel mit einem Rahmen mit Titel versehen
listenPanel.setBorder(new TitledBorder("Zutaten"));
listenPanel.setLayout(new BoxLayout(listenPanel, BoxLayout.Y_AXIS));
groesseEinsetzen(listenPanel, 580, 150);
// Box als Container fuer das listeLabel
// erleichtert die Anordnung im BoxLayout
Box listeLabelBox = Box.createHorizontalBox();
JLabel listeLabel = new JLabel("Zutatenliste");
listeLabel.setAlignmentX(SwingConstants.LEFT);
groesseEinsetzen(listeLabel, 560, 50);
listeLabelBox.add(listeLabel);
listenPanel.add(listeLabelBox);
JList zutatenEingabe = new JList();
JScrollPane scrollZutaten = new JScrollPane(zutatenEingabe);
groesseEinsetzen(scrollZutaten, 560, 50);
listenPanel.add(scrollZutaten);
listenPanel.add(Box.createRigidArea(new Dimension(0, 10)));
return listenPanel;
}
// Hilfsmethode zum exakten Setzen der Groesse einer Komponente
private static void groesseEinsetzen(JComponent c, int width, int height) {
Dimension d = new Dimension(width, height);
c.setPreferredSize(d);
c.setMaximumSize(d);
c.setMinimumSize(d);
}
}
Code:
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class MeinCocktailMixerGUI extends JFrame{
/**
* Main-Methode
*
* @param args
* Übergabeparameter
*/
public static void main(String[] args) {
MeinCocktailMixerGUI cmixer = new MeinCocktailMixerGUI();
cmixer.initGUI();
}
private JPanel backP;//in diesem leeren Panel werden die anderen Panels sichtbar gemacht
private JPanel startPanel;//Begrüßungspanel
private JPanel neuPanel;//neuen Cocktail-Anlegungspanel
private JPanel ausgebenPanel;//alle Cocktails ausgeben Panel
private JFrame fenster;//Variable wird für die Funktion "sichern" benötigt, da die Methode "chooser.showSaveDialog(fenster)" in der Klammer eine JFrame-Variable braucht
public static final String START = "StartPanel";//Variable zur Übergabe an das CardLayout, "static" für das CardLayout in "NeuCocktailListener"
public static final String NEU = "NeuPanel";//Variable zur Übergabe an das CardLayout, "static" für das CardLayout in "NeuCocktailListener"
public static final String AUSGABE = "AusgabePanel";//Variable zur Übergabe an das CardLayout, "static" für das CardLayout in "CocktailsAusgebenListener"
//Variable, um in jeder Klasse ein CocktailBar-Objekt übergeben zu können
private CocktailBar cb;
//erzeugt eine leere CocktailBar
public MeinCocktailMixerGUI(){
this.cb = new CocktailBar();
}
//Methode holt sich das CocktailBar-Objekt
public CocktailBar getCocktailBar() {
return cb;
}
//Methode holt sich das BackPanel
public JPanel getBackPanel(){
return backP;
}
//Erzeugt CardLayout und verwaltet die Sichtbarkeit der Panels
public void initGUI() {
JFrame cmixerFenster = new JFrame();
cmixerFenster.setSize(new Dimension(600, 400));
// Fenstertitel setzen
cmixerFenster.setTitle("Mein Cocktailmixer");
// Fensterposition auf die Mitte des Bildschirm festlegen
cmixerFenster.setLocationRelativeTo(null);
cmixerFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// MenueLeiste erzeugen und in Fenster einfuegen
JMenuBar cMenuBar = erzeugeMenuBar();
cmixerFenster.setJMenuBar(cMenuBar);
//BackPanel hinzufügen
backP = new JPanel(new CardLayout());
cmixerFenster.getContentPane().add(backP);
// BegruessungsPanel
startPanel = erzeugeBegruessungsPanel();
//erzeugt Listener und übergibt ihn an das CocktailNeuPanel
CocktailNeuListener listener = new CocktailNeuListener(this);
neuPanel = new CocktailNeuPanel(listener);
//erzeugt Listener und übergibt ihn an das CocktailAusgebenPanel
CocktailsAusgebenListener listener1 = new CocktailsAusgebenListener(this);
ausgebenPanel = new CocktailsAusgebenPanel(listener1);
//verwaltet die Sichtbarkeit der Panels (CardLayout)
backP.add(startPanel, START);
backP.add(neuPanel, NEU);
backP.add(ausgebenPanel, AUSGABE);
// Fenster sichtbar machen
cmixerFenster.setVisible(true);
}
/**
* Methode zum Erzeugen eines BegrüssungsPanels mit Text und Bild
*
* @return JPanel BegruessungsPanel
*/
private static JPanel erzeugeBegruessungsPanel() {
// Neuen JPanel Container erzeugen
JPanel startPanel = new JPanel();
// Begrüssungstext erzeugen und in Container einfügen
JLabel begText = new JLabel("Willkommen beim Cocktailmixer");
startPanel.add(begText);
// Bildkomponente aus uebergebene Grafik erzeugen und in Container
// einfügen
JLabel begBild = new JLabel(new ImageIcon("AbbCocktail.gif"));
startPanel.add(begBild);
// Layoutmanager für vertikales Layout setzen
BoxLayout vLayout = new BoxLayout(startPanel, BoxLayout.Y_AXIS);
startPanel.setLayout(vLayout);
// Komponenten zentriert im Container ausrichten
begText.setAlignmentX(Component.CENTER_ALIGNMENT);
begBild.setAlignmentX(Component.CENTER_ALIGNMENT);
// Container zurückgeben
return startPanel;
}
/**
* Methode zum Erzeugen MenueLeiste mit Menuepunkten.
*
* @return JPanel MenueLeiste
*/
private JMenuBar erzeugeMenuBar() {
// Menueleiste erzeugen
JMenuBar menueLeiste = new JMenuBar();
// Menuepunkt CocktailMixer
JMenu mixer_menu = new JMenu("Cocktailmixer");
JMenu mixer = new JMenu("Cocktails");
// Menueeintraege
JMenuItem neuItem = new JMenuItem("Neu");
JMenuItem ladenItem = new JMenuItem("Laden ...");
JMenuItem speichernItem = new JMenuItem("Speichern ...");
JMenuItem beendenItem = new JMenuItem("Beenden");
JMenuItem cockEingeben = new JMenuItem("Neuen Cocktail eingeben");
JMenuItem alleCockAusgeben = new JMenuItem("Alle Cocktails ausgeben");
JMenuItem sucheCock = new JMenuItem("Suche nach Cocktails");
//Actionlistener für das JItemMenu "Neuen Cocktail eingeben"
cockEingeben.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
CardLayout cl = (CardLayout) backP.getLayout();
cl.show(backP, NEU);
}
});
//Actionlistener für das JItemMenu "Speichern"
speichernItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showSaveDialog(fenster);
if(returnVal == JFileChooser.APPROVE_OPTION){
String file = chooser.getSelectedFile().getAbsolutePath();//getAbsolutePath() wird benötigt, da sonst im Workspace Verzeichnis gespeichert wird
file += chooser.getSelectedFile().getName();
cb.sichern(file);
}
}
});
alleCockAusgeben.addActionListener(new ActionListener(){
@Override
public void actionPerformed (ActionEvent e){
CardLayout cl = (CardLayout) backP.getLayout();
cl.show(backP, AUSGABE);
}
});
// Menueeintraege einfuegen
mixer_menu.add(neuItem);
mixer_menu.add(ladenItem);
mixer_menu.add(speichernItem);
mixer_menu.add(beendenItem);
mixer.add(cockEingeben);
mixer.add(alleCockAusgeben);
mixer.add(sucheCock);
// Menuepunkte in Menueleiste einfuegen
menueLeiste.add(mixer_menu);
menueLeiste.add(mixer);
// MenueLeiste zurueckgeben
return menueLeiste;
}
}
Gespeichert werden die Cocktails hier:
Code:
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class CocktailNeuListener implements ActionListener {
private JTextField cocktailName;
private JTextField menge;
private JTextField zutat;
private JTextArea zubereitung;
private JList zutatenListe;
private JCheckBox alkoholfrei;
private JButton hinzufuegen;
private JButton speichern;
private JButton abbrechen;
private MeinCocktailMixerGUI mixer;
private Cocktail cocktail;
//Konstruktor
public CocktailNeuListener(MeinCocktailMixerGUI mixer){
this.mixer = mixer;
this.cocktail = new Cocktail(null);
}
//Methode für Action Events
@Override
public void actionPerformed(ActionEvent e) {
if( e.getSource() == hinzufuegen){
hinzufuegen();
}
if( e.getSource() == speichern){
speichern();
}
if( e.getSource() == abbrechen){
abbrechen();
}
}
//Methode Hinzufügen
private void hinzufuegen(){
//Zutat speichern
Zutat neueZutat = new Zutat (zutat.getText(), menge.getText());
cocktail.setZutat(neueZutat);
//In die Liste schreiben
DefaultListModel model = (DefaultListModel) zutatenListe.getModel();
model.addElement(neueZutat);
zutat.setText("");
menge.setText("");
}
//Alle Textfelder leeren
private void resetText(){
cocktailName.setText("");
zutat.setText("");
menge.setText("");
zubereitung.setText("");
}
//Wird abbrechen gewählt wird der gesamte Text zurückgesetzt und das Startpanel angezeigt
private void abbrechen(){
cocktail = new Cocktail();
zutatenListe.setModel(new DefaultListModel());
resetText();
/*CardLayout cl = (CardLayout) mixer.getBackPanel().getLayout();
cl.show(mixer.getBackPanel(), mixer.START);*/
}
//speichert die angegebenen Daten in CocktailBar
private void speichern(){
cocktail.setName(cocktailName.getText());
cocktail.setZubereitung(zubereitung.getText());
mixer.getCocktailBar().addCocktail(cocktail);
cocktail = new Cocktail(null);
zutatenListe.setModel(new DefaultListModel());
resetText();
}
//Buttons mit ActionListener versehen
public void setHinzufuegen(JButton hinzufuegen) {
this.hinzufuegen = hinzufuegen;
hinzufuegen.addActionListener(this);
}
public void setSpeichern(JButton speichern){
this.speichern = speichern;
speichern.addActionListener(this);
}
public void setAbbrechen(JButton abbrechen) {
this.abbrechen = abbrechen;
abbrechen.addActionListener(this);
}
//Methode um die Eingaben zu speichern
public void setName(JTextField name){
this.cocktailName = name;
}
public void setAlkoholfrei(JCheckBox alkoholfrei) {
this.alkoholfrei = alkoholfrei;
}
public void setZubereitung(JTextArea zubereitung) {
this.zubereitung = zubereitung;
}
public void setMenge(JTextField menge) {
this.menge = menge;
}
public void setZutat(JTextField zutat) {
this.zutat = zutat;
}
public void setZutaten(JList zutaten) {
this.zutatenListe = zutaten;
}
}
Code:
import java.awt.Dimension;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.TitledBorder;
public class CocktailNeuPanel extends JPanel {
//Listener für die Buttons und andere Events
private CocktailNeuListener listener;
/**
* Konstruktor. Erzeugt eine grafische Komponente
* Übergibt den Listener
*/
public CocktailNeuPanel(CocktailNeuListener listener) {
this.listener = listener;
// Das Layout wird mit Hilfe eines Boxlayout realisiert
// BoxLayout.Y_AXIS bewirkt eine vertikale Anordnung der
// Komponenten (auf der Y-Achse)
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
this.add(Box.createVerticalGlue());
// Das Label sollte nicht die ganze Breite fuellen.
// Dafuer wird eine horizontale Box erzeugt.
// In die Box kommt flexibler leerer Raum und dann das Label
// Danach wird die Box in dem Panel hinzugefuegt.
Box nameLabelBox = Box.createHorizontalBox();
nameLabelBox.add(Box.createHorizontalGlue());
JLabel nameLabel = new JLabel("Cocktailname");
// nameLabel links anordnen
nameLabel.setAlignmentX(SwingConstants.LEFT);
groesseEinsetzen(nameLabel, 585, 20);
nameLabelBox.add(nameLabel);
this.add(nameLabelBox);
// Das Textfeld sollte nicht die ganze Breite fuellen.
// Dafuer wird eine horizontale Box erzeugt.
// In die Box kommt leerer Raum, dann das Textfeld und noch
// ein leerer Raum
// Dann wird die Box in das Panel eingefuegt.
// createRigidArea und glue (siehe Box b0) unterscheiden
// sich beim Vergroessern und Verkleinern des Fensters.
Box nameTextFieldBox = Box.createHorizontalBox();
nameTextFieldBox.add(Box.createHorizontalGlue());
JTextField nameTextField = new JTextField();
groesseEinsetzen(nameTextField, 490, 20);
nameTextField.setAlignmentX(SwingConstants.LEFT);
nameTextFieldBox.add(nameTextField);
listener.setName(nameTextField);
JCheckBox alkoholfrei = new JCheckBox("alkoholfrei");
nameTextFieldBox.add(alkoholfrei);
listener.setAlkoholfrei(alkoholfrei);
nameTextFieldBox.add(Box.createHorizontalGlue());
this.add(nameTextFieldBox);
// Fester Abstand oberhalb des Zutaten-Panels
this.add(Box.createRigidArea(new Dimension(0, 10)));
// Box erzeugen, welche das Zutaten-Panel enthält
Box zutatenPanelBox = Box.createHorizontalBox();
// Vor und nach dem Panel wird flexibler Abstand (Glue) eingefügt
zutatenPanelBox.add(Box.createHorizontalGlue());
JPanel pZutat = erzeugeZutatenPanel();
zutatenPanelBox.add(pZutat);
zutatenPanelBox.add(Box.createHorizontalGlue());
this.add(zutatenPanelBox);
// Fester Abstand unterhalb des Zutaten-Panels
this.add(Box.createRigidArea(new Dimension(0, 10)));
// Label fuer "Zubereitung" wie bei "Cocktailname"
Box zubereitungLabelBox = Box.createHorizontalBox();
zubereitungLabelBox.add(Box.createHorizontalGlue());
JLabel zubereitungLabel = new JLabel("Zubereitung");
// zubereitungLabel links anordnen
zubereitungLabel.setAlignmentX(SwingConstants.LEFT);
groesseEinsetzen(zubereitungLabel, 585, 20);
zubereitungLabelBox.add(zubereitungLabel);
this.add(zubereitungLabelBox);
// zubereitungTextAreaBox wird wie nameTextFieldBox behandelt
Box zubereitungTextAreaBox = Box.createHorizontalBox();
zubereitungTextAreaBox.add(Box.createHorizontalGlue());
JTextArea zubereitungTextArea = new JTextArea();
JScrollPane scrollZubereitung = new JScrollPane(zubereitungTextArea);
groesseEinsetzen(scrollZubereitung, 580, 50);
scrollZubereitung.setAlignmentX(SwingConstants.LEFT);
zubereitungTextAreaBox.add(scrollZubereitung);
zubereitungTextAreaBox.add(Box.createHorizontalGlue());
this.add(zubereitungTextAreaBox);
listener.setZubereitung(zubereitungTextArea); //Listener Zubereitung
// Fester Platz fuer die Schaltflaechen
this.add(Box.createRigidArea(new Dimension(0, 10)));
// Box fuer die Schaltflaechen
Box buttonBox = Box.createHorizontalBox();
JButton speicherButton = new JButton("Speichern");
//Listener für Speichern-Button
listener.setSpeichern(speicherButton);
JButton abbruchButton = new JButton("Abbrechen");
//Listener für Abbrechen-Button
listener.setAbbrechen(abbruchButton);
// HorizontalGlue links und rechts damit die Schaltflaechen zentriert
// werden
buttonBox.add(Box.createHorizontalGlue());
buttonBox.add(speicherButton);
// Fester Platz zwischen den Schaltflaechen
buttonBox.add(Box.createRigidArea(new Dimension(10, 0)));
buttonBox.add(abbruchButton);
buttonBox.add(Box.createHorizontalGlue());
this.add(buttonBox);
this.add(Box.createVerticalGlue());
}
// Methode fuer das Panel Zutaten
public JPanel erzeugeZutatenPanel() {
JPanel zutatenPanel = new JPanel();
// Panel mit einem Rahmen mit Titel versehen
zutatenPanel.setBorder(new TitledBorder("Zutaten"));
zutatenPanel.setLayout(new BoxLayout(zutatenPanel, BoxLayout.Y_AXIS));
groesseEinsetzen(zutatenPanel, 580, 150);
// Box fuer die 2 Label
Box labelBox = Box.createHorizontalBox();
JLabel mengeLabel = new JLabel("Menge");
JLabel zutatLabel = new JLabel("Zutat");
groesseEinsetzen(mengeLabel, 120, 20);
groesseEinsetzen(zutatLabel, 440, 20);
labelBox.add(mengeLabel);
labelBox.add(zutatLabel);
mengeLabel.setAlignmentX(SwingConstants.LEFT);
zutatLabel.setAlignmentX(SwingConstants.LEFT);
zutatenPanel.add(labelBox);
// Box fuer die Textfelder und JButton
Box inputBox = Box.createHorizontalBox();
groesseEinsetzen(inputBox, 560, 28);
JTextField mengeT = new JTextField();
groesseEinsetzen(mengeT, 110, 20);
JTextField zutatT = new JTextField();
groesseEinsetzen(zutatT, 310, 20);
JButton hinzuButton = new JButton("Hinzufügen");
inputBox.add(mengeT);
inputBox.add(Box.createRigidArea(new Dimension(10, 00)));
inputBox.add(zutatT);
inputBox.add(Box.createHorizontalGlue());
inputBox.add(hinzuButton);
zutatenPanel.add(inputBox);
listener.setMenge(mengeT);//Listener für die Mengenangabe
listener.setZutat(zutatT);//Listener für die Zutatenangabe
listener.setHinzufuegen(hinzuButton);
// Box als Container fuer das listeLabel
// erleichtert die Anordnung im BoxLayout
Box listeLabelBox = Box.createHorizontalBox();
JLabel listeLabel = new JLabel("Zutatenliste");
listeLabel.setAlignmentX(SwingConstants.LEFT);
groesseEinsetzen(listeLabel, 560, 20);
listeLabelBox.add(listeLabel);
zutatenPanel.add(listeLabelBox);
JList zutatenEingabe = new JList();
zutatenEingabe.setModel(new DefaultListModel());
JScrollPane scrollZutaten = new JScrollPane(zutatenEingabe);
groesseEinsetzen(scrollZutaten, 560, 50);
zutatenPanel.add(scrollZutaten);
zutatenPanel.add(Box.createRigidArea(new Dimension(0, 10)));
//Listener für die Zugabenliste
listener.setZutaten(zutatenEingabe);
return zutatenPanel;
}
// Hilfsmethode zum exakten Setzen der Groesse einer Komponente
private static void groesseEinsetzen(JComponent c, int width, int height) {
Dimension d = new Dimension(width, height);
c.setPreferredSize(d);
c.setMaximumSize(d);
c.setMinimumSize(d);
}
}