So, ich bin's mal wieder
Also, die überschrift ist ein wenig misslungen, aber prinzipiell geht es darum, dass ich ein Programm für die Zählung der Inventur entworfen habe ( Habe mir diesmal bei dem Quellcode Mühe gegeben :lol: ) und jedoch bei dem Erstellen eines neuen Panels dies nicht wie vorgesehen in dem anderen Panel erscheint.
So, der Code:
InventurOberfläche.java :
FirmenPanel.java :
InventurObjektPanel.java :
So, vielleicht ist es ja nur ein kleiner Denkfehler meinerseits, aber es frustriert mich immer tierisch einen ganzen Nachmittag vercodet zu haben um am Ende an etwas zu scheitern, das einem selbst noch nicht bekannt ist.
PS: Lerne erst seit knapp 2 Monaten eigenständig Java, hab daher keinen Plan was ich falsch mache :bahnhof:
Gruß Luca
edit: Problemstellung nochmal geändert :###
Also, die überschrift ist ein wenig misslungen, aber prinzipiell geht es darum, dass ich ein Programm für die Zählung der Inventur entworfen habe ( Habe mir diesmal bei dem Quellcode Mühe gegeben :lol: ) und jedoch bei dem Erstellen eines neuen Panels dies nicht wie vorgesehen in dem anderen Panel erscheint.
So, der Code:
InventurOberfläche.java :
Code:
package inventur;
import javax.swing.*;
import java.awt.*;
/** Klasse InventurOberfläche: Haupt-GUI zur Betrachtung der Attribute der InventurObjektPanels:
* - Fünf FirmenPanels ( evtl. mehr ),
* Serialisierung des Ganzen */
public class InventurOberfläche extends JFrame{
private FirmenPanel goldwell;
private FirmenPanel alcina;
private FirmenPanel giseke;
private FirmenPanel wittkötter;
private FirmenPanel bmo;
//Konstruktor: Aufbau des GUI's
public InventurOberfläche(){
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
goldwell = new FirmenPanel("Goldwell");
alcina = new FirmenPanel("Alcina");
giseke = new FirmenPanel("Giseke");
wittkötter = new FirmenPanel("Wittkötter");
bmo = new FirmenPanel("bmo");
this.setLayout(new GridLayout(3,2,10,10));
this.add(new JScrollPane(goldwell));
this.add(new JScrollPane(alcina));
this.add(new JScrollPane(giseke));
this.add(new JScrollPane(wittkötter));
this.add(new JScrollPane(bmo));
this.setSize((int)screenSize.getWidth()/2,(int)screenSize.getHeight()/2);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
// Main Methode: Startpunkt des Programmes
public static void main( String[] args){
InventurOberfläche start = new InventurOberfläche();
}
}
FirmenPanel.java :
Code:
package inventur;
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/** Klasse FirmenPanel: Darstellung von InventurObjektPanels in Gruppierungen,
* HilfeDIalog (CreateInventurObjektPanelWindow) zum Erstellen neuer InventurObjektPanels */
public class FirmenPanel extends JPanel {
private CreateInventurObjektPanelWindow createInventurObjektPanelWindow;
private JButton cmdInventurObjektPanel;
private JLabel firma;
private ArrayList<InventurObjektPanel> inventurObjektList = new ArrayList<InventurObjektPanel>();
// Konstruktor: Darstellen des Firmennamen & einer Liste von InventurObjektPanels
public FirmenPanel(String firmaName){
firma = new JLabel(firmaName);
cmdInventurObjektPanel = new JButton("Neues Produkt");
cmdInventurObjektPanel.addActionListener(new cmdInventurObjektPanelListener());
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
cmdInventurObjektPanel.setAlignmentX(LEFT_ALIGNMENT);
cmdInventurObjektPanel.setAlignmentY(CENTER_ALIGNMENT);
this.add(cmdInventurObjektPanel);
this.add(firma);
for(int i = 0; i < inventurObjektList.size(); i++){
this.add(inventurObjektList.get(i));
}
}
/** Innere Klasse cmdInventurObjektPanelListener:
* Behandlung von ActionEvents des cmdInventurObjektPanel - JButtons:
* - Aufruf des HilfeDialogs (CreateInventurObjektPanelWindow) */
public class cmdInventurObjektPanelListener implements ActionListener{
@Override
public void actionPerformed (ActionEvent e){
createInventurObjektPanelWindow = new CreateInventurObjektPanelWindow();
}
}
/** Innere Klasse cmdContinueListener:
* Behandlung von ActionEvents des cmdContiniue - JButtons:
* - Erzeugung des neuen InventurObjektPanels */
public class cmdContinueListener implements ActionListener{
@Override
public void actionPerformed (ActionEvent e){
inventurObjektList.add(new InventurObjektPanel(createInventurObjektPanelWindow.txtName.getText(),
createInventurObjektPanelWindow.txtAnzahl.getText()));
validate();
createInventurObjektPanelWindow.setVisible(false);
createInventurObjektPAnelWindow.dispose();
}
}
/** Innere Klasse CreateInventurObjektPanelWindow:
* Darstellung eines Hilfedialogs zur Erzeugung eines neuen InventurObjektsPanels */
private class CreateInventurObjektPanelWindow extends JFrame{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
private JLabel lblName;
private JLabel lblAnzahl;
public JTextField txtName;
public JTextField txtAnzahl;
private JButton cmdContinue;
//Aufbau des JFrame, setzen des ActionListeners
private CreateInventurObjektPanelWindow(){
lblName = new JLabel("Produktname:");
lblAnzahl = new JLabel("Produktanzahl:");
txtName = new JTextField("");
txtAnzahl = new JTextField("");
cmdContinue = new JButton("continue...");
cmdContinue.addActionListener(new cmdContinueListener());
this.setLayout(new GridLayout(3,2,4,4));
this.setTitle("Create - Dialog");
this.add(lblName);
this.add(txtName);
this.add(lblAnzahl);
this.add(txtAnzahl);
this.add(cmdContinue);
this.setSize((int)screenSize.getWidth()/4,(int)screenSize.getHeight()/4);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
}
}
InventurObjektPanel.java :
Code:
package inventur;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.*;
import java.awt.event.*;
/** Klasse InventurObjektPanel: Darstellung wichtiger Fakten über einen Inventurgegenstand,
* HilfeDialog (changeWindow) zum ändern der Werte name & anzahl */
public class InventurObjektPanel extends JPanel{
private ChangeWindow changeWindow;
private String anzahl = "";
private String name = "";
private JLabel lblName;
private JLabel lblAnzahl;
private JButton cmdChange;
//Konstruktor: Aufbau des JPanel, setzen des ActionListeners
public InventurObjektPanel(String newName, String newAnzahl){
name = newName;
anzahl = newAnzahl;
lblName = new JLabel(name);
lblAnzahl = new JLabel(anzahl);
cmdChange = new JButton("Change...");
cmdChange.addActionListener(new cmdChangeListener());
this.add(lblName);
this.add(lblAnzahl);
this.add(cmdChange);
}
//Setter & Getter für name & anzahl
public void setAnzahl(String newAnzahl){
anzahl = newAnzahl;
}
public String getAnzahl(){
return anzahl;
}
public void setName(String newName){
name = newName;
}
public String getName(){
return name;
}
/** Innere Klasse cmdChangeListener:
* Behandlung von ActionEvents des cmdChange - JButtons:
* - Aufruf des HilfeDialogs (ChangeWindow) */
public class cmdChangeListener implements ActionListener{
@Override
public void actionPerformed (ActionEvent e){
changeWindow = new ChangeWindow(name, anzahl);
}
}
/** Innere Klasse cmdContinueListener:
* Behandlung von ActionEvents des cmdContiniue - JButtons:
* - Setzen von neuen Werten für name & anzahl */
public class cmdContinueListener implements ActionListener{
@Override
public void actionPerformed (ActionEvent e){
name = changeWindow.txtName.getText();
anzahl = changeWindow.txtAnzahl.getText();
changeWindow = null;
}
}
/** Innere Klasse ChangeWindow:
* Darstellung eines Hilfedialogs zur Änderung der Werte name & anzahl */
private class ChangeWindow extends JFrame{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
private JLabel lblName;
private JLabel lblAnzahl;
public JTextField txtName;
public JTextField txtAnzahl;
private JButton cmdContinue;
//Aufbau des JFrame, setzen des ActionListeners
private ChangeWindow(String produktName, String produktAnzahl){
lblName = new JLabel("Produktname:");
lblAnzahl = new JLabel("Produktanzahl:");
txtName = new JTextField(produktName);
txtAnzahl = new JTextField(produktAnzahl);
cmdContinue = new JButton("continue...");
cmdContinue.addActionListener(new cmdContinueListener());
this.setLayout(new GridLayout(3,2,4,4));
this.setTitle("Change - Dialog");
this.add(lblName);
this.add(txtName);
this.add(lblAnzahl);
this.add(txtAnzahl);
this.add(cmdContinue);
this.setSize((int)screenSize.getWidth()/4,(int)screenSize.getHeight()/4);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
}
}
So, vielleicht ist es ja nur ein kleiner Denkfehler meinerseits, aber es frustriert mich immer tierisch einen ganzen Nachmittag vercodet zu haben um am Ende an etwas zu scheitern, das einem selbst noch nicht bekannt ist.
PS: Lerne erst seit knapp 2 Monaten eigenständig Java, hab daher keinen Plan was ich falsch mache :bahnhof:
Gruß Luca
edit: Problemstellung nochmal geändert :###