kochphilip Geschrieben 20. Dezember 2007 Geschrieben 20. Dezember 2007 Ich möchte eine Klasse, die dem Zweck dient zwei Arrays zu füllen (die beiden Werte gehören zusammen). Es soll sich also ein Fenster öffnen mit zwei Textfeldern in denen die Werte geschrieben werden können. Zwei Buttons um im Array nach vorne bzw nach hinten im Array gesprungen wird. Und ein Textfeld um direkt auf eine Position im Array zu gelangen. Das größe des Arrays ist unbekannt und soll sich zur Laufzeit ändern (größer bzw. kleiner werden). Ich habe es schon mit ArrayList probiert, aber funktioniert hat das gar nicht. Hat jemand vielleicht irgendein kleines Programm was etwas ähnliches macht? Zitieren
bigredeyes Geschrieben 20. Dezember 2007 Geschrieben 20. Dezember 2007 dann schau dir mal die klasse java.util.vector an. die sieht sehr passend dafür aus. was hast du denn bis jetzt gecodet? wir machen nur ungern die hausaufgaben von berufsschülern . gib uns code [oder mehr von deinen gedankengängen] und wir helfen! bigredeyes Zitieren
kingofbrain Geschrieben 20. Dezember 2007 Geschrieben 20. Dezember 2007 Servus, ich würde im Gegensatz zu bigredeyes eher bei der ArrayList bleiben. Der Vector ist veraltet und nicht wirklich performant (dafür aber komplett synchronisiert, glaube ich). Diese Diskussion wird zur Genüge in den Sun Foren geführt. Aber ich schließe mich bigredeyes auch an: Geht nicht ist kein Fehler, was ist Dein Ansatz und wo genau klappt was genau nicht. Peter Zitieren
kochphilip Geschrieben 20. Dezember 2007 Autor Geschrieben 20. Dezember 2007 sind keine Hausaufgaben, zumindest nicht im eigentlichen Sinne... Soll von meinen Betrieb aus, mich mal mit OOP beschäftigen, kämpfe daher seid Montag mit Java... Ich habe schon mein Fenster mit den Feldern und den Buttons. Die beiden Textfelder speicher ich in einer ArrayList. Wenn ich den ersten Wert eintippe und dann auf den Button für weiter gehe, sehe ich dann mein eingetipptes (außer meinen letzten Buchstaben). Ich schätze mal das liegt daran das ich bei jedem Tippen das einfüge, statt zu überschreiben. Ich dachte ich hätte vielleicht Glück und das Add Statement fügt ein wenn ich dem Index mit gebe... Muss ich jetzt jedes mal meinen Eintrag aus der List löschen und den neuen Hinzufügen oder gibt es dafür besser Lösungen? Hier einfach mal ein Teil des Codes: public void caretUpdate(CaretEvent event) { if (upd == 0) { AVar.add(IndAkt,tfAVar.getText()); Wcodes.add(IndAkt,tfWcodes.getText()); IndMax = Wcodes.size(); tfIndMax.setText(String.valueOf(IndAkt)); } } public void actionPerformed(ActionEvent event) { upd = 1; for (int i = 1;i < 13;i++) { System.out.println(i+": "+AVar.get(i)+" - "+Wcodes.get(i)); } String cmd = event.getActionCommand(); if(cmd == ">") { if(IndAkt <= IndMax) { IndAkt++; } } if (cmd == "<") { if(IndAkt > 1) { IndAkt--; } } if (IndAkt <= IndMax) { tfAVar.setText(AVar.get(IndAkt)); tfWcodes.setText(Wcodes.get(IndAkt)); } else { tfAVar.setText(""); tfWcodes.setText(""); } tfIndAkt.setText(String.valueOf(IndAkt)); upd = 0; } Zitieren
kingofbrain Geschrieben 20. Dezember 2007 Geschrieben 20. Dezember 2007 Sorry, ich verstehe Deine Frage nicht. Könntest Du Deinen Code bitte in Code-Tags packen, Deine Frage noch mal neu formulieren und Dich auf einen bestimmten Code-Abschnitt beziehen? Einen Fehler zu analysieren, der aus der Benutzersicht geschildert wird, ist mir zu mühsam. Sag, an welcher Stelle im Code Du was erwartest und was Du bekommst, dann kommen wir weiter. Peter Zitieren
kochphilip Geschrieben 20. Dezember 2007 Autor Geschrieben 20. Dezember 2007 AVar.add(IndAkt,tfAVar.getText()); Das ist glaub ich die Zeile bei der ich mein Problem habe. AVar ist eine ArrayList. Ich habe mittlerweile rausgefunden das der Befehl immer ein neues Element hinzufügt und nicht das Alte überschreibt. Ich möchte aber das das Alte überschrieben wird, weil das Statement im "caretUpdate" drin ist und bei jedem Buchstaben aufs Neue aufgerufen wird. Hier aber mal der aktuelle Stand: import javax.swing.*; import java.awt.event.*; import java.awt.*; import javax.swing.event.*; import java.util.Properties; import java.util.ArrayList; import java.util.Iterator; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.BufferedReader; public class PKONV0003 extends JFrame implements ActionListener, CaretListener { private JTextField tfWcodes = new JTextField(25); private JTextField tfAVar = new JTextField(5); private JTextField tfIndAkt = new JTextField(2); private JTextField tfIndMax = new JTextField(2); private JButton btnVor = new JButton(">"); private JButton btnZurueck = new JButton("<"); private static int IndMax = 1; private static int IndAkt = 1; private static int upd = 0; private ArrayList<String> AVar = new ArrayList<String>(); private ArrayList<String> Wcodes = new ArrayList<String>(); private static PKONV0003 wnd = new PKONV0003(); public PKONV0003() { super("Eingabe der Werbecodes"); Container contentPane = getContentPane(); contentPane.setLayout(new GridLayout(3,1)); // Zeile 1: JPanel zeile1 = new JPanel(); zeile1.setLayout(new GridLayout(1,2)); JLabel lblAVar = new JLabel( " Ausgabevariante:", SwingConstants.LEFT ); zeile1.add(lblAVar); tfAVar.addCaretListener(this); tfWcodes.setToolTipText("Eingabe der Ausgabevariante"); zeile1.add(tfAVar); zeile1.setBorder(BorderFactory.createEtchedBorder()); contentPane.add(zeile1); // Zeile 2: JPanel zeile2 = new JPanel(); zeile2.setLayout(new GridLayout(1,2)); JLabel lblWcodes = new JLabel( " Werbecodes:", SwingConstants.LEFT ); zeile2.add(lblWcodes); tfWcodes.addCaretListener(this); tfWcodes.setToolTipText("Eingabe der Werbecodes"); zeile2.add(tfWcodes); zeile2.setBorder(BorderFactory.createEtchedBorder()); contentPane.add(zeile2); // Zeile 3: JPanel zeile3 = new JPanel(); zeile3.setLayout(new FlowLayout()); btnZurueck.setToolTipText("Zurück"); btnZurueck.addActionListener(this); zeile3.add(btnZurueck); tfIndAkt.setToolTipText("Springe zu..."); tfIndAkt.addActionListener(this); tfIndAkt.setText("1"); zeile3.add(tfIndAkt); JLabel lblFlash = new JLabel( " /", SwingConstants.LEFT ); zeile3.add(lblFlash); tfIndMax.setEditable(false); tfIndMax.setText("1"); zeile3.add(tfIndMax); btnVor.setToolTipText("Vor"); btnVor.addActionListener(this); zeile3.add(btnVor); zeile3.setBorder(BorderFactory.createEtchedBorder()); getContentPane().add(zeile3); AVar.add(0," "); Wcodes.add(0," "); } public void caretUpdate(CaretEvent event) { if (upd == 0) { AVar.add(IndAkt,tfAVar.getText()); Wcodes.add(IndAkt,tfWcodes.getText()); System.out.println(IndAkt+": "+AVar.get(IndAkt)+" - "+Wcodes.get(IndAkt)+" - *"); IndMax = Wcodes.size(); tfIndMax.setText(String.valueOf(IndAkt)); } } public void actionPerformed(ActionEvent event) { upd = 1; String cmd = event.getActionCommand(); // System.out.println(cmd); if(cmd == ">") { if(IndAkt <= IndMax) { IndAkt++; } } if (cmd == "<") { if(IndAkt > 1) { IndAkt--; } } System.out.println(IndAkt+" - "+IndMax); if (IndAkt <= IndMax) { tfAVar.setText(AVar.get(IndAkt)); tfWcodes.setText(Wcodes.get(IndAkt)); } else { tfAVar.setText(""); tfWcodes.setText(""); } tfIndAkt.setText(String.valueOf(IndAkt)); upd = 0; } public void zeige(String plaf) { wnd.setResizable(false); wnd.setLocation(400,250); wnd.setSize(350 ,115); wnd.setVisible(true); } public static void main(String[] args) { } } Zitieren
kingofbrain Geschrieben 20. Dezember 2007 Geschrieben 20. Dezember 2007 Servus, super, das ist eine gut gestellte Frage gewesen. Du suchst wahrscheinlich die Methode set(int index, E element) aus der Klasse java.util.ArrayList. Schau Dir doch bitte mal die Java API Doc für diese Klasse an, dann findest Du zwei Dinge raus: 1. was die Methode macht, die ich Dir gesagt habe 2. das die API Doc eines der wichtigsten Werkzeuge für Entwickler ist Schöne Grüße, Peter Zitieren
kochphilip Geschrieben 20. Dezember 2007 Autor Geschrieben 20. Dezember 2007 ich habe auf der Seite: Referenz: java.util.ArrayList geguckt... ... und die Methode total übersehen, danke das müsste genau die sein die ich die ganze zeit am suchen bin... Zitieren
kingofbrain Geschrieben 20. Dezember 2007 Geschrieben 20. Dezember 2007 Servus, am besten arbeitest Du mit der originalen Java API Doc: Java 2 Platform SE 5.0 Da steht alles zur Standard Edition drin und wenn Du irgendwelche Frameworks verwendest, haben die meist auch eine solche Doku und Du findest Dich gut zurecht. Peter Zitieren
kochphilip Geschrieben 20. Dezember 2007 Autor Geschrieben 20. Dezember 2007 gut danke, ich werd dann wohl beide nutzen (Englisch gehört nicht gerade zu meinen stärken) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.