Hallo,
ich habe folgendes prolem:
ich habe in einer GUI eine ReiterPane auf der ein Reiter Eingabe und ein Reiter Auswertung ist.
Ich habe nun ein paar Datensätze über ein TabelModel und eine Generische Klasse generiert.
Im TabelModel der Eingabe wird ein Objekt der Klasse AuswertModel erzeugt was mir ermöglicht auf das Model der Auswertung (auch ein JTable in JScollPane) zuzugreifen und die erhaltenen daten auch an dieses weiterzuleiten. Im AuswertModel sollen die Daten auf gleichheit geprüft werden (eas auch funktioniert) und in die aListe hinzugefügt werden oder wenn zwei Objekte gleich sind werden einzelne werte addiert.-----soweit sogut....
das problem ist jetzt das die daten der aListe aus irgendeinem Grund nicht auf dem Auswertungs Reiter in der tabelle erscheinen sondern die Zeilen in der Eingabe Tabelle überschreiben.
Kann mir da jemand mal bei der Fehlersuche helfen?
MfG Fritz
hier mal die Dateien:
GUI
Model der Eingabe:
Model der Auswertung:
generische Liste:
ich habe folgendes prolem:
ich habe in einer GUI eine ReiterPane auf der ein Reiter Eingabe und ein Reiter Auswertung ist.
Ich habe nun ein paar Datensätze über ein TabelModel und eine Generische Klasse generiert.
Im TabelModel der Eingabe wird ein Objekt der Klasse AuswertModel erzeugt was mir ermöglicht auf das Model der Auswertung (auch ein JTable in JScollPane) zuzugreifen und die erhaltenen daten auch an dieses weiterzuleiten. Im AuswertModel sollen die Daten auf gleichheit geprüft werden (eas auch funktioniert) und in die aListe hinzugefügt werden oder wenn zwei Objekte gleich sind werden einzelne werte addiert.-----soweit sogut....
das problem ist jetzt das die daten der aListe aus irgendeinem Grund nicht auf dem Auswertungs Reiter in der tabelle erscheinen sondern die Zeilen in der Eingabe Tabelle überschreiben.
Kann mir da jemand mal bei der Fehlersuche helfen?
MfG Fritz
hier mal die Dateien:
GUI
Java:
package Pack;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.FocusTraversalPolicy;
import java.awt.GridLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
public class GUI_Inv extends JFrame {
// Elemente
JTabbedPane reiterPane = new JTabbedPane();
JPanel eingabe, auswertung, optionen, fussZeile, leftPane, auswertLeftPane,
addPane, lftPaneOptionen, pnlMitteArt2;
// addPane
JComboBox jBox;
JTextField textFeld1, textFeld2, artikelPfad, inventurPfad;
JButton btnSpeichern, btnLoeschen, btnDrucken, btnAddArtikelPfad,
btnAddInventurPfad;
JRadioButton rb1, rb2;
ButtonGroup btnGruppe;
JLabel label1, label2, labl3, label4;
JLabel labArtikel, labTextFeld1, labTextFeld2, labArtInfo;
// leftPane
JTextArea infoText;
JScrollPane liste, auswertListe;
JTable dTabelle,aTabelle;
AuswertModel aModel;
InvDatenModel datModel;
private static int MAXINV, MAXART;
// Konstruktor
public GUI_Inv(String titel) {
super(titel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
erstelleKomponente();
addKomponente();
pack();
}
private void erstelleKomponente() {
reiterPane = new JTabbedPane(); // GrundFrame mit Reitern
eingabe = new JPanel();
eingabe.setLayout(new BorderLayout());
addPane = new JPanel();
addPane.setLayout(new GridLayout(0, 2, 5, 5));
addPane.setAlignmentX(LEFT_ALIGNMENT);
labArtikel = new JLabel("Artikel Nr");
addPane.add(labArtikel);
jBox = new JComboBox();
jBox.setPrototypeDisplayValue(textFeld1);
addPane.add(jBox);
labTextFeld1 = new JLabel("\u00d8 1 [mm] ", JLabel.RIGHT);
addPane.add(labTextFeld1);
textFeld1 = new JTextField(14);
textFeld1.setDocument(createNumericDocumentWithMaxLength(4));
textFeld1.setHorizontalAlignment(JTextField.RIGHT);
addPane.add(textFeld1);
labTextFeld2 = new JLabel("\u00d8 2 [mm] ", JLabel.RIGHT);
addPane.add(labTextFeld2);
textFeld2 = new JTextField();
textFeld2.setDocument(createNumericDocumentWithMaxLength(4));
textFeld2.setHorizontalAlignment(JTextField.RIGHT);
addPane.add(textFeld2);
addPane.add(Box.createHorizontalGlue());
btnSpeichern = new JButton("Speichern");
btnSpeichern.addActionListener(new buttonHorcher());
addPane.add(btnSpeichern);
rb1 = new JRadioButton("Inventur-D");
rb2 = new JRadioButton("Artikel-D");
btnGruppe = new ButtonGroup();
rb1.setSelected(true);
btnGruppe.add(rb1);
btnGruppe.add(rb2);
addPane.add(rb1);
addPane.add(rb2);
addPane.setMaximumSize(addPane.getPreferredSize());
infoText = new JTextArea();
infoText.setEditable(false);
infoText.setLineWrap(true);
infoText.setWrapStyleWord(true);
infoText.setAlignmentX(LEFT_ALIGNMENT);
infoText.setFocusTraversalKeysEnabled(false);
leftPane = new JPanel();
leftPane.setLayout(new BoxLayout(leftPane, BoxLayout.Y_AXIS));
leftPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 4, 4));
leftPane.add(addPane);
leftPane.add(infoText);
fussZeile = new JPanel();
fussZeile.setLayout(new FlowLayout(FlowLayout.LEFT));
aModel=new AuswertModel();
auswertung = new JPanel();
auswertung.setLayout(new BorderLayout());
aTabelle=new JTable(aModel);
auswertListe = new JScrollPane(aTabelle);
auswertLeftPane = new JPanel();
btnLoeschen = new JButton("Löschen");
btnDrucken = new JButton("Drucken...");
btnDrucken.addActionListener(new buttonHorcher());
auswertLeftPane.add(btnDrucken);
File f=new File(getOption("InventurPfad"));
System.out.println(f);
datModel=new InvDatenModel(f);
dTabelle =new JTable(datModel);
liste = new JScrollPane(dTabelle);
optionen = new JPanel();
optionen.setLayout(new BorderLayout());
optionen.setBorder(BorderFactory.createEmptyBorder(10, 5, 5, 10));
Box boxLinks = Box.createVerticalBox();
// boxLinks.add(BorderFactory.createEmptyBorder(0, 0, 0, 5));
label1 = new JLabel("Artikel Pfad");
label1.setAlignmentX(RIGHT_ALIGNMENT);
label1.setAlignmentY(CENTER_ALIGNMENT);
label2 = new JLabel("Inventur Pfad");
label2.setAlignmentX(RIGHT_ALIGNMENT);
label2.setAlignmentY(CENTER_ALIGNMENT);
boxLinks.add(label1);
boxLinks.add(Box.createVerticalStrut(15));
boxLinks.add(label2);
optionen.add(boxLinks, BorderLayout.WEST);
Box boxMitte = Box.createVerticalBox();
// pnlMitteArt2=new JPanel();
// pnlMitteArt2.setLayout(new
// BoxLayout(pnlMitteArt2,BoxLayout.LINE_AXIS));
artikelPfad = new JTextField(30);
artikelPfad.setAlignmentX(LEFT_ALIGNMENT);
artikelPfad.setMaximumSize(artikelPfad.getPreferredSize());
inventurPfad = new JTextField(30);
inventurPfad.setAlignmentX(LEFT_ALIGNMENT);
inventurPfad.setMaximumSize(inventurPfad.getPreferredSize());
boxMitte.add(artikelPfad);
boxMitte.add(Box.createVerticalStrut(5));
boxMitte.add(inventurPfad);
optionen.add(boxMitte, BorderLayout.CENTER);
Box boxRechts = Box.createVerticalBox();
btnAddArtikelPfad = new JButton("...");
btnAddArtikelPfad.addActionListener(new buttonHorcher());
btnAddInventurPfad = new JButton("...");
btnAddInventurPfad.addActionListener(new buttonHorcher());
boxRechts.add(btnAddArtikelPfad);
boxRechts.add(btnAddInventurPfad);
btnAddArtikelPfad.setAlignmentX(LEFT_ALIGNMENT);
btnAddInventurPfad.setAlignmentX(LEFT_ALIGNMENT);
optionen.add(boxRechts, BorderLayout.LINE_END);
FocusTraversalPolicy policy = MyFocusTraversalPolicy
.getFocusTraversal(new JComponent[] { jBox, textFeld1,
textFeld2, btnSpeichern });
setFocusTraversalPolicy(policy);
setFocusCycleRoot(true);
}
private void addKomponente() {
getContentPane().add(reiterPane);
reiterPane.addTab("Eingabe", eingabe);
reiterPane.addTab("Auswertung", auswertung);
reiterPane.addTab("Optionen", optionen);
eingabe.add(leftPane, BorderLayout.WEST);
eingabe.add(liste, BorderLayout.CENTER);
eingabe.add(fussZeile, BorderLayout.LINE_END);
auswertung.add(auswertListe, BorderLayout.CENTER);
auswertung.add(auswertLeftPane, BorderLayout.WEST);
leseDateien();
}
private void leseDateien() {
// setOption("MAXART",(""+200));
// setOption("MAXINV",""+1000);
File fl = new File(getOption("ArtikelPfad"));
if (!fl.canRead()) {
JOptionPane
.showMessageDialog(
optionen,
"Die Artikeldatei kann nicht gelesen werden, bitte eine gültige \"Artikel.txt\" einstellen",
"ungültige Datei", JOptionPane.WARNING_MESSAGE);
}
if (!fl.canWrite()) {
JOptionPane
.showMessageDialog(
optionen,
"Die Artikeldatei kann nicht verändert werden wegen fehlender Schreibrechte!",
"Warnung keine ausreichenden Zugriffsrechte",
JOptionPane.WARNING_MESSAGE);
}
artikelPfad.setText(getOption("ArtikelPfad"));
inventurPfad.setText(getOption("InventurPfad"));
try {
FileReader fr = new FileReader(fl.getAbsoluteFile());
BufferedReader br = new BufferedReader(fr);
String z = br.readLine();
while ((z = br.readLine()) != null) {
// System.out.println(z);
String[] zz = z.split(";");
jBox.addItem(zz[0]);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
System.out
.println("Ein Ausgabefehller beim Initialisieren der Artikel Datei");
}
// JOptionPane invDialog=new JOptionPane();
int ant = JOptionPane
.showConfirmDialog(
null,
"Neue Inventur-Datei erstellen?\nBei Nein wird die zuletzt geöffnete Datei geladen.",
"Inventur Datei", JOptionPane.YES_NO_OPTION);
if (ant == 0) {
System.out.println("ja wurde gedrückt");
File pfad = new File(getOption("InventurPfad"));
JFileChooser flc = new JFileChooser(pfad);
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Invenur Datei ", "csv");
flc.setFileFilter(filter);
int returnVal = flc.showSaveDialog(eingabe);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = flc.getSelectedFile();
System.out.println(flc.getSelectedFile().toString());
// This is where a real application would save the file.
setOption("InventurPfad", (file.toString() + ".csv"));
inventurPfad.setText(getOption("InventurPfad"));
try {
FileWriter fr = new FileWriter(file + ".csv");
fr.write("Art Nr.;Einheit;D 1;d 2;Meter;Datum");
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("Abbruch durch benutzer");
}
}
if (ant == 1) {
System.out.println("nein wurde gedrückt");
}
}
class buttonHorcher implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == btnAddArtikelPfad) {
System.out.println("Artikelpfad gedrückt");
artikelPfadDialog();
jBox.removeAllItems();
leseDateien();
}
if (arg0.getSource() == btnAddInventurPfad) {
System.out.println("Inventurpfad + gedrückt");
inventurPfadDialog();
leseDateien();
}
if(arg0.getSource() ==btnSpeichern){
InventurDaten x=new InventurDaten("Artikel 5","m",0f,0f,10f,"datum");
datModel.addD(x);
System.out.println("Speichern wurde gedrückt");
System.out.println(datModel.dl.getElementCount());
}
if (arg0.getSource() ==btnDrucken){
InventurDaten x=new InventurDaten("Artikel 5","m",0f,0f,10f,"datum");
datModel.addD(x);
System.out.println("drucken wurde gedrückt");
System.out.println(datModel.dl.getElementCount());
}
}
}
public void artikelPfadDialog() {
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Artikrl Datei", "txt", "csv");
JFileChooser fc = new JFileChooser(getOption("ArtikelPfad"));
fc.setFileFilter(filter);
int returnVal = fc.showOpenDialog(optionen);
File file = null;
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = (fc.getSelectedFile());
// This is where a real application would open the file.
setOption("ArtikelPfad", file.getAbsoluteFile().toString());
} else {
artikelPfad.setText(getOption("ArtikelPfad"));
}
// return file;
}
public void inventurPfadDialog() {
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Inventur Datei", "csv");
System.out.println("bin da");
JFileChooser fc = new JFileChooser();
fc.setFileFilter(filter);
int returnVal = fc.showOpenDialog(optionen);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
// This is where a real application would open the file.
inventurPfad.setText(file.getAbsolutePath());
setOption("InventurPfad", inventurPfad.getText());
} else {
inventurPfad.setText(getOption("InventurPfad"));
}
}
/*
* Properties einstellungen sichern und lesen
*/
public static String getOption(String variable) {
try {
Properties props = new Properties();
File ini = new File("Inventur.ini");
props.load(new FileInputStream(ini));
return (props.getProperty(variable));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void setOption(String variable, String wert) {
try {
Properties props = new Properties();
File ini = new File("Inventur.ini");
props.load(new FileInputStream(ini));
// System.out.println(props.getProperty("ARBEITER"));
// Und jetzt die Werte?
props.setProperty(variable, wert);
// Und sichern
props.store(new FileOutputStream(ini), variable);
// System.out.println(props.getProperty("ARBEITER"));
} catch (Exception e) {
System.out.println("Wert-Schlüssel schreiben nicht möglich");
}
}
private Document createNumericDocumentWithMaxLength(final int maxLength) {
Document doc = new PlainDocument() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (getLength() + str.length() > maxLength)
return;
if (!str.matches("^[\\d]*$"))
return;
super.insertString(offs, str, a);
}
};
return doc;
}
public static void main(String[] args)
throws UnsupportedLookAndFeelException {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
GUI_Inv fenster = new GUI_Inv("TITEL");
// fenster.setSize(640, 400);
fenster.setLocationRelativeTo(null);
System.out.println("test");
// setOption("ITHEM_1","1574027070356");
fenster.setVisible(true);
}
}
Model der Eingabe:
Java:
package Pack;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class InvDatenModel implements TableModel{
DatenListe<InventurDaten> dl=new DatenListe<InventurDaten>(1000);
// File dateiName = new File("y:\\Java von eee\\InventurDaten082011.csv");
// BufferedReader br;
// String[] z1;
// String z;
int x, y;
float zz;
private File dateiName;
private List<TableModelListener> tableListener = new ArrayList<TableModelListener>();;
// Auswertungs Bereich
//DatenListe<InventurDaten> auswertung=new DatenListe<InventurDaten>(1000);
AuswertModel a=new AuswertModel();
//Konstruktor
InvDatenModel(File dateiNamee){
this.dateiName=dateiNamee;
System.out.println(dateiName);
datenLaden();
}
//Instanzvariablen
String[][] daten=new String[500][6];
InventurDaten satz;
int anzZeilen, spalten;
BufferedReader br;
String z;
String[] z1;
// Datei auswerten
public void datenLaden()
{
System.out.println("bin da");
// System.out.println(!(dateiName.exists()));
if (!(dateiName.exists())){
System.out.println("Dateipfad falsch");
}
System.out.println("Datei ok");
try {
FileReader fr = new FileReader(dateiName);
br = new BufferedReader(fr);
z=br.readLine();
while ((z = br.readLine()) != null) {
z1 = z.split(";");
System.out.println(z);
//System.out.println(InventurDaten.getAnzDaten());
satz=new InventurDaten(
z1[0],
z1[1],
Float.parseFloat(z1[2]),
Float.parseFloat(z1[3]),
Float.parseFloat(z1[4]),
z1[5]);
System.out.println(z1[0]);
System.out.println(satz.artNr+"\t"+satz.f1+"\t"+satz.f2+"\t"+satz.datum);
addD(satz);
// for (int j = 0; j < z1.length; j++) {
// daten[anzZeilen][j] = z1[j];
// satz=
// }
anzZeilen++;
//z = br.readLine();
//System.out.println(z);
}
spalten=z1.length;
} catch (FileNotFoundException e) {
System.out.println("Datei nicht gefunden");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Ein Ausgabe fehler");
e.printStackTrace();
}
}
public void anzz() throws IOException{
while((z=br.readLine())!=null){
anzZeilen +=1;
}
}
public void addD(InventurDaten f) {
dl.add(f);
System.out.println(dl.get(dl.getElementCount()-1).f3);
a.addAuswertung(f);
//testausgabe();
for (TableModelListener l : tableListener) {
l.tableChanged(new TableModelEvent(this));
}
}
@Override
public void addTableModelListener(TableModelListener l) {
tableListener.add(l);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex){
case 0:return String.class;
case 1:return String.class;
case 2:return Float.class;
case 3:return Float.class;
case 4:return Float.class;
case 5:return String.class;
default: return null;
}
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex){
case 0:return "Artikel Nr";
case 1:return "Einheit";
case 2:return "A-\u00d8[mm] / [m]";
case 3:return "I-\u00d8[mm] / [Kg]";
case 4:return "Meter";
case 5:return "Datum";
default: return null;
}
}
@Override
public int getRowCount() {
return dl.getElementCount();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
switch (columnIndex){
case 0:return dl.get(rowIndex).artNr;
case 1:return dl.get(rowIndex).einheit;
case 2:return dl.get(rowIndex).f1;
case 3:return dl.get(rowIndex).f2;
case 4:return dl.get(rowIndex).f3;
case 5:return dl.get(rowIndex).zusText;
default: return null;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return false;
}
@Override
public void removeTableModelListener(TableModelListener l) {
tableListener.remove(l);
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
}
}
Model der Auswertung:
Java:
package Pack;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class AuswertModel implements TableModel{
private List<TableModelListener> auswListener = new ArrayList<TableModelListener>();;
//Konstruktor
//}
// Auswertungs Bereich
DatenListe<InventurDaten> aListe=new DatenListe<InventurDaten>(1000);
public void addAuswertung(InventurDaten f) {
// System.out.println(auswertung.getElementCount());
int zzz=aListe.getElementCount();
System.out.println("auswerten Zähler :"+zzz);
for (int i = 0; i < zzz; i++) {
//System.out.println(i);
if (aListe.get(i).artNr.equals(f.artNr)) {
aListe.get(i).setM(aListe.get(i).f3 + f.f3);
System.out.println("addiert zu Element :"+i );
return;
}
}
for (TableModelListener l : auswListener) {
l.tableChanged(new TableModelEvent(this));
}
aListe.add(f);
System.out.println("aListe Element :"+aListe.getElementCount());
}
@Override
public void addTableModelListener(TableModelListener l) {
auswListener.add(l);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex){
case 0:return String.class;
case 1:return String.class;
case 2:return Float.class;
default: return null;
}
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex){
case 0:return "Artikel Nr.";
case 1:return "Einheit";
case 2:return "Meter";
default: return null;
}
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return aListe.getElementCount();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(rowIndex){
case 0:return aListe.get(columnIndex).artNr;
case 1:return aListe.get(columnIndex).einheit;
case 2:return aListe.get(columnIndex).f3;
default :return null;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return false;
}
@Override
public void removeTableModelListener(TableModelListener l) {
auswListener.remove(l);
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
}
}
generische Liste:
Java:
package Pack;
public class DatenListe<T> {
private T[] array;
private int nextFreeSlot=0;
public DatenListe(int groese){
array =(T[]) new Object[groese];
}
public void add(T o){
if (nextFreeSlot==array.length){
throw new IllegalStateException("Liste ist voll!");
}
array[nextFreeSlot]=o;
//System.out.println(o);
nextFreeSlot++;
}
public T get(int index){
return array[index];
}
public int getGroese(){
return array.length;
}
public int getElementCount(){
return nextFreeSlot;
}
}
Zuletzt bearbeitet von einem Moderator: