Zum Inhalt springen

Array verwalten


kochphilip

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

   {

   }

} 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...