If Schleife erst nach drücken der Enter-Taste ausführen

dj_membrane

Grünschnabel
Hallo Community,

ich bin noch Java Anfänger und Versuche im Moment
ein einfaches Programm für meine Bachelorarbeit zu erstellen.
In diesem Programm werden Daten von einem File (.CSV) eingelesen.
Diese Daten sollen Position für Position auf dem Bildschirm ausgegeben werden,
und der nutzer muss diese Daten bestätigen.
Das Einlesen der Daten funktioniert problemlos und ist im folgenden Code nicht mehr enthalen. Statt der eingelesenen Daten werden diese mit 4 verschiedenen Daten repräsentiert.
(labels [0][2] = "Lager 1";
labels [1][2] = "Lager 2";
labels [0][3] = "Artikel 1";
labels [1][3] = "Artikel 2";)

Was noch nicht funktioniert: Die Überprüfung der Daten über mein GUI.
Hier befinden sich eine do - while schleife in der die Daten überprüft werden.
Leider wird das Textfeld für Usereingaben (z.B. txtScannLager) ständig ausgelesen und überprüft was sehr viele Fehlermeldungen zur Folge hat.
Meine Idee wäre gewesen, diese Schleife erst zu Starten wenn der User "Enter" drückt.
Ich habe bereits auch schon mit "Action Listener" probiert, leider konnte ich hier nichts erreichen. Ich Arbeite auch erst Seite ca. 2 Wochen mit Java.

Es wäre super, wenn Ihr mir weiterhelfen könntet.


Danke schon mal im voraus -
Flo.


Hier noch mein bisheriger Code:


Code:
// User Eingaben prüfen

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;    
import Prog1Tools.IOTools;
import java.io.BufferedReader;
import java.io.InputStreamReader;




public class Oberfläche002 extends JFrame {
	static JLabel lbText = new JLabel("MOP",0);
	static JButton btOK = new JButton("OK");
	static JButton btExit = new JButton("Exit");
        static JLabel lblLager = new JLabel ("Lagerort");
	static JTextField txtLager = new JTextField("");
        static JTextField txtScannLager = new JTextField (""); 
        static JLabel lblArtikel = new JLabel ("Artikel"); 
        static JTextField txtArtikel = new JTextField (""); 
        static JTextField txtScannArtikel = new JTextField (""); 
        static JTextField txtFeldErg = new JTextField (""); 
	JPanel Panel = new JPanel();   


        public boolean Status;


	public Oberfläche002() {
		super("Titel");
               
                Panel.setLayout(new GridLayout (10,1));
                Panel.add(lbText );
                Panel.add(btOK);
		Panel.add(btExit);
                Panel.add(lblLager);
		Panel.add(txtLager );
                Panel.add(txtScannLager);
                Panel.add(lblArtikel);
                Panel.add(txtArtikel);
                Panel.add(txtScannArtikel);
                Panel.add (txtFeldErg);
                // Panel.add(Panel );
                getContentPane().add("Center",Panel);
		setSize(10,20);
		pack();
		setVisible(true);

                


	}

   
   public static void unterprogramm (String Lager, String Artikel){

                  
                txtLager.setText("");
                txtFeldErg.setText("");
                txtScannLager.setText("");
                txtScannArtikel.setText("");
                txtLager.setText(Lager);

// Lager
                String ScannLagerplatz;
                boolean checkL = true;

                //  Diese Anweisung soll erst
                // nach Beendigen der User Eingabe ausgeführt werden
                // (wenn dieser "Enter" gedrückt hat)
                // Grund: Die weiter spätere do - while schleife wird
                // sonst permanent durchlaufen, und es werden laufend
                // Fehlermeldung ("Fehler - Bitte nochmal eingeben") ausgebeben.

               if (true){

                   // mit dieser Anweisung soll der vom System vorgegebene Lagerplatz
                   // überprüft werden.
                   // der User muss dazu als bestätigung genau diesen Lagerplatz
                   // eingeben, ansonsten erfolgt eine Fehlermeldung.
                 do {

                     // ist nach dem ersten Schleifendurchgang die Eingabe
                     // fehlerhaft gewesen, soll hier eine Fehlermeldung
                     // ausgegeben werden
                     if (checkL != true) {
                         txtFeldErg.setText("Fehler - Bitte nochmal Eingeben");
                         System.out.println("Fehler");
                     }
    
                ScannLagerplatz = txtScannLager.getText().replaceAll(" ","");
                checkL = ((Lager.replaceAll(" ","")).compareToIgnoreCase(ScannLagerplatz) == 0);
                System.out.println("checkL " + checkL);

                 } while (checkL == false);

               }

                txtFeldErg.setText("");


// Artikel

               txtArtikel.setText("");
                txtArtikel.setText(Artikel);

                String ScannArtikel;
                boolean checkA = true;

                do {
                     if (checkA != true) {
                         txtFeldErg.setText("Fehler - Bitte nochmal Eingeben");
                         System.out.println("Fehler");
                     }
                
                 ScannArtikel = txtScannArtikel.getText().replaceAll(" ","");
                
                 checkA = ((Artikel.replaceAll(" ","")).compareToIgnoreCase(ScannArtikel) == 0);

                 } while (checkA == false);

                 txtFeldErg.setText("");
                 txtLager.setText("");
                 txtScannLager.setText("");
                 txtScannArtikel.setText("");

        }


public static void main ( String[] argv) throws IOException {
		new Oberfläche002();
                

                btOK.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
                            // Variablen var = new Variablen();
				// lbText.setText("Test" + var.i);
			}

		});
		btExit.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.exit(0);
			}
		});
                


                // Diese labels sollen 4 Daten der eingelesen Datei repräsentieren
                String [][] labels = new String [9][9];
                labels [0][2] = "Lager 1";
                labels [1][2] = "Lager 2";
                labels [0][3] = "Artikel 1";
                labels [1][3] = "Artikel 2";

                int i=0;
                for (i=0; i<2; i++){

                    // aktuelles Lager und aktueller Artikel an Unterprogramm übergeben
               unterprogramm(labels[i][2], labels[i][3]);


                }


}
}
 
Zuletzt bearbeitet:
Ich will jetzt nicht direkt helfen aber für die Zukunft:

1. Benutze Code Tags um deinen Code, sonst wird sich das niemand angucken ;)
2. IF ist KEINE SCHLEIFE xD meine Güte, sorry, das geht mir langsam echt arg.. Wieso denken das alle?
Schleife = mehrmaliger Durchlauf von etwas ..
IF zeigt nur an, was wann gemacht wird, ist also eine Anweisung oder Konstrukt ^^

Sorry musste gerade sein :D
 
Um ehrlich zu sein, habe ich nicht recht verstanden, was du machen willst. Da du sagtest es mit ActionListener asprobiert zu habenm glaube ich, dass da der Fehler steckt.

Nur nochmal zur Erläuterung mein Vorschlag:

Java:
public class Oberfläche002 extends JFrame implements ActionListener
{

...

public Oberfläche002()
	{
		super("Titel");

		btOK.addActionListener(this);
		
		Panel.setLayout(new GridLayout(10, 1));
		Panel.add(lbText);
		Panel.add(btOK);
		Panel.add(btExit);
		Panel.add(lblLager);
		Panel.add(txtLager);
		Panel.add(txtScannLager);
		Panel.add(lblArtikel);
		Panel.add(txtArtikel);
		Panel.add(txtScannArtikel);
		Panel.add(txtFeldErg);
		// Panel.add(Panel );
		getContentPane().add("Center", Panel);
		setSize(10, 20);
		pack();
		setVisible(true);
                // nicht vergessen ^^
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
...

        @Override
	public void actionPerformed(ActionEvent e)
	{
		
		// Lager
		String ScannLagerplatz;
		boolean checkL = true;
               // keine Ahnung was diese  Schleifen/Abzweigungen (if(true)) sollen

              ....
      }
 
Zuletzt bearbeitet von einem Moderator:
Java:
               // keine Ahnung was diese  Schleifen/Abzweigungen (if(true)) sollen

              
      }

Diese If Anweisung würde ich gerne starten, wenn der User "Enter" drückt.
Da ich noch nicht weiß, wie das funktioniert, steht hier einfach ein "true".

Ich will meine Daten (labels ... ) auf dem Bildschirm ausgeben (im JTextField "txtLager")
und die Eingabe des Users soll im JTextField "txtScannLager" erfolgen.
Diese beiden Strings sollen miteinander verglichen werden. Ist die Eingabe korrekt erfolgt die Ausgabe des Artikels im nächsten JTextField "txtArtikel".

Die soll später mit einer .CSV Datei ausgelesen und abgearbeitet werden. Hierzu habe ich bereits ein Programm geschrieben dass diese Daten und die Eingabe abfrägt. Aber nur in der Konsole. Nun würde ich dies gerne auf dem Bildschirm "hübsch" darstellen.
Falls es hilfreich wäre, kann ich gerne mein "Daten Einlesen und Überprüfen" - Code auch posten.
 
Zuletzt bearbeitet von einem Moderator:
Also ich wiss nicht, ob ich deinen Problematik richtig erkannt habe.

Optimal scheint es mir auch nicht programmiert zu sein, es geht dabei allerdings eher um die Problemlösung im Allgemeinen.

So wie ich es verstanden habe, habe ich es mal folgendermaßen ausprobiert:
Java:
// User Eingaben prüfen

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Oberfläche002 extends JFrame implements ActionListener
{
	static JLabel lbText = new JLabel("MOP", 0);
	static JButton btOK = new JButton("OK");
	static JButton btExit = new JButton("Exit");
	static JLabel lblLager = new JLabel("Lagerort");
	static JTextField txtLager = new JTextField("");
	static JTextField txtScannLager = new JTextField("");
	static JLabel lblArtikel = new JLabel("Artikel");
	static JTextField txtArtikel = new JTextField("");
	static JTextField txtScannArtikel = new JTextField("");
	static JTextField txtFeldErg = new JTextField("");
	JPanel Panel = new JPanel();

	private String currLager;
	private String currArtikel;
	private boolean checkLager;
	private boolean checkArtikel;

	public boolean Status;

	public Oberfläche002()
	{
		super("Titel");

		btOK.addActionListener(this);

		Panel.setLayout(new GridLayout(10, 1));
		Panel.add(lbText);
		Panel.add(btOK);
		Panel.add(btExit);
		Panel.add(lblLager);
		Panel.add(txtLager);
		Panel.add(txtScannLager);
		Panel.add(lblArtikel);
		Panel.add(txtArtikel);
		Panel.add(txtScannArtikel);
		Panel.add(txtFeldErg);
		// Panel.add(Panel );
		getContentPane().add("Center", Panel);
		setSize(10, 20);
		pack();
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String[] argv) throws IOException
	{
		Oberfläche002 ob = new Oberfläche002();

		btOK.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
			// Variablen var = new Variablen();
			// lbText.setText("Test" + var.i);
			}

		});
		btExit.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});

		// Diese labels sollen 4 Daten der eingelesen Datei repräsentieren
		String[][] labels = new String[9][9];
		labels[0][2] = "Lager 1";
		labels[1][2] = "Lager 2";
		labels[0][3] = "Artikel 1";
		labels[1][3] = "Artikel 2";

		int i = 0;
		for (i = 0; i < 2; i++)
		{
			// aktuelles Lager und aktueller Artikel an Unterprogramm übergeben
			ob.setLagerUndArtikel(labels[i][2], labels[i][3]);
		}
	}

	private void setLagerUndArtikel(String lager, String artikel)
	{
		clearTextFields();
		checkLager = false;
		currLager = lager;
		checkArtikel = false;
		currArtikel = artikel;
		txtLager.setText(lager);
	}

	private void clearTextFields()
	{
		txtArtikel.setText(null);
		txtFeldErg.setText(null);
		txtLager.setText(null);
		txtScannArtikel.setText(null);
		txtScannLager.setText(null);
	}

	@Override
	public void actionPerformed(ActionEvent e)
	{
		if (!checkLager)
		{
			checkLager = txtLager.getText().trim().equalsIgnoreCase(txtScannLager.getText().trim());
			if (!checkLager)
				txtFeldErg.setText("Lager stimmt nicht überein");
			else
				txtArtikel.setText(currArtikel);
		}
		else if (!checkArtikel)
		{
			checkArtikel = txtArtikel.getText().trim().equalsIgnoreCase(txtScannArtikel.getText().trim());
			if (!checkArtikel)
				txtFeldErg.setText("Artikel stimmt nicht überein");
		}
		if (checkArtikel && checkLager)
			txtFeldErg.setText("alles okay");
	}
}
 
Zuletzt bearbeitet:
Also ich wiss nicht, ob ich deinen Problematik richtig erkannt habe.

Optimal scheint es mir auch nicht programmiert zu sein, es geht dabei allerdings eher um die Problemlösung im Allgemeinen.

So wie ich es verstanden habe, habe ich es mal folgendermaßen ausprobiert:

Ja, da stimme ich dir zu, dass es nicht Optimal programmiert ist.
Bin ja noch am lernen der Sprache, da basiert viel auf probieren ;-)

Aber danke für deine Mühen - das könnte mir wirklich weiterhelfen.
Da mach ich mich doch gleich wieder hochmotiviert ans Werk!

Nur eine Frage habe ich: Es wird sofort zu Beginn als ausgabe das "Lager 2" bzw. der "Artikel 2" angezeigt,
da die for - Schleife im main Programm sofort durchläuft.
Wie kann man hier realisieren, dass zuerst das "Lager 1" mit "Artikel 1" und dann das "Lager 2" mit "Artikel 2" abgefragt wird?
 
Zuletzt bearbeitet:
Ich habe mir den letzten Vorschlag angeschaut, gelernt und bin damit wirklich weitergekommen.
Leider habe ich das Problem mit der for schleife noch nicht hinbekommen.

Im Moment bin ich soweit, dass ich die Daten von einer extra Klasse "DatenEinlesen" einlesen lasse und an diese auch den aktuellen Zählerstand übergeben will. (Am Ende des "actionPerformed" übergebe ich einen INT-Wert an "Daten Einlesen".

Leider wird bei jedem aufruft von "DatenEinlesen" eine neue Oberfläche generiert.
(Neuer Oberfläche deshalb, weil ich in "DatenEinlesen" ein neues Objekt "Main ob = new Main();" erstelle.
Kann ich dies irgendwie umgehen?

Vielen Dank schon mal im Voraus für eure Hilfe!

Code:
// User Eingaben prüfen

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main extends JFrame implements ActionListener
{
    static JLabel lbText = new JLabel("MOP", 0);
    // static JButton btOK = new JButton("OK");
    static JButton btExit = new JButton("Exit");
    static JLabel lblEingabe = new JLabel ("Eingabe");
    static JTextField txtEingabe = new JTextField("");
    static JLabel lblLager = new JLabel("Lagerort");
    static JTextField txtLager = new JTextField("");
    static JLabel lblArtikel = new JLabel("Artikel");
    static JTextField txtArtikel = new JTextField("");
    // static JTextField txtScannArtikel = new JTextField("");
    static JLabel lblFeldErg = new JLabel ("Ergebnis");
    static JTextField txtFeldErg = new JTextField("");
   

    private String currLager;
    private String currArtikel;
    private boolean checkLager;
    private boolean checkArtikel;
    
    private int Zähler;

    public Main()
    {
        // super("Titel");  // braucht ma scheinbar neda

        txtEingabe.addActionListener(this);
        
        JPanel Panel = new JPanel();
        Panel.setLayout(new GridLayout(15, 1));
        Panel.add(lbText);
        // Panel.add(btOK);
        Panel.add(btExit);
        Panel.add(lblEingabe);
        Panel.add(txtEingabe);
        Panel.add(lblLager);
        Panel.add(txtLager);
        Panel.add(lblArtikel);
        Panel.add(txtArtikel);
        // Panel.add(txtScannArtikel);
        Panel.add(lblFeldErg);
        Panel.add(txtFeldErg);
        // Panel.add(Panel );
        getContentPane().add("Center", Panel);
        setSize(10, 20);
        pack();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] argv) throws IOException
    {

        int Start = 0;
        DatenEinlesen(Start);

        btExit.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });

    }
 
    public static void DatenEinlesen (int Zähler){

        int i=0;
        i = i + Zähler;

        Main ob = new Main ();

        String[][] labels = new String[9][9];
        labels[0][2] = "Lager 1";
        labels[1][2] = "Lager 2";
        labels[0][3] = "Artikel 1";
        labels[1][3] = "Artikel 2";

        System.out.println("Test DatenEinlesen Zähler:" + i);
        
        ob.setLagerUndArtikel(labels[i][2], labels[i][3]);


    }

    private void setLagerUndArtikel(String lager, String artikel)
    {
        clearTextFields();
        checkLager = false;
        currLager = lager;
        checkArtikel = false;
        currArtikel = artikel;
        txtLager.setText(lager);
        System.out.println("Test setLuA - Lager: " + lager);
        System.out.println("Test setLuA - Artikel: " + artikel);

    }

    private void clearTextFields()
    {
        txtArtikel.setText(null);
        txtFeldErg.setText(null);
        txtLager.setText(null);
        txtEingabe.setText(null);
    }

    // bei jedem Tastendruck wird gesammte schleife durchlaufen
    // deswegen auch des erste If mit (!checkLager)
    // ist dieses checkLager == true, wird sofot der Artikel überprüft.
    public void actionPerformed(ActionEvent e)

    {
       if (!checkLager)
            {
                checkLager = txtLager.getText().trim().equalsIgnoreCase
                                        (txtEingabe.getText().trim());
                txtEingabe.selectAll();

                if (!checkLager)
                    txtFeldErg.setText("Lager stimmt nicht überein");
                else
                    txtFeldErg.setText("OK");
                    txtArtikel.setText(currArtikel);

            }
            else if (!checkArtikel)
            {
                checkArtikel = txtArtikel.getText().trim().equalsIgnoreCase
                                    (txtEingabe.getText().trim());
                txtEingabe.selectAll();

                if (!checkArtikel)
                    txtFeldErg.setText("Artikel stimmt nicht überein");
            }
            if (checkArtikel && checkLager){
                txtFeldErg.setText("alles okay");

                System.out.println("Ende IF ActionPerformed");
                int a = 1;
                DatenEinlesen(a);
            }
     }
 }
 
Ich würde in deinem Fall etwas aufpassen nicht zu viel statische Methoden zu verwenden. Um ehrlich zu sein, kann man daran immer etwas erkennen, wer schon mehr oder weniger objektorientiert programmiert. Aber-> "kommt Zeit, kommt Rat".

Hier wieder meine Lösung, beachte den Kommentar am Ende der "actionPerformed"-Methode, aber ich denke, da wird sich sicherlich nochmal was ändern...

BTW: Ich habe die lokale int-Variable entfernt, da primitive Datentypen bei der Parameterübergabe immer kopiert werden und sich Änderungen nicht auf den Wert beim Methoden-/Konstruktoraufruf auswirken, währendessen Objekte/Klassen mittels Call by Reference übergeben werden.

Java:
// User Eingaben prüfen

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main extends JFrame implements ActionListener
{
	static JLabel lbText = new JLabel("MOP", 0);
	// static JButton btOK = new JButton("OK");
	static JButton btExit = new JButton("Exit");
	static JLabel lblEingabe = new JLabel("Eingabe");
	static JTextField txtEingabe = new JTextField("");
	static JLabel lblLager = new JLabel("Lagerort");
	static JTextField txtLager = new JTextField("");
	static JLabel lblArtikel = new JLabel("Artikel");
	static JTextField txtArtikel = new JTextField("");
	// static JTextField txtScannArtikel = new JTextField("");
	static JLabel lblFeldErg = new JLabel("Ergebnis");
	static JTextField txtFeldErg = new JTextField("");

	private String currLager;
	private String currArtikel;
	private boolean checkLager;
	private boolean checkArtikel;

	private int Zähler;

	public Main()
	{
		super("Titel"); // braucht man nur, wenn man dem Fensterchen einen Namen geben möchte :)

		txtEingabe.addActionListener(this);

		JPanel Panel = new JPanel();
		Panel.setLayout(new GridLayout(15, 1));
		Panel.add(lbText);
		// Panel.add(btOK);
		Panel.add(btExit);
		Panel.add(lblEingabe);
		Panel.add(txtEingabe);
		Panel.add(lblLager);
		Panel.add(txtLager);
		Panel.add(lblArtikel);
		Panel.add(txtArtikel);
		// Panel.add(txtScannArtikel);
		Panel.add(lblFeldErg);
		Panel.add(txtFeldErg);
		// Panel.add(Panel );
		getContentPane().add("Center", Panel);
		setSize(10, 20);
		pack();
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String[] argv) throws IOException
	{
		Main ob = new Main();
		int Start = 0;
		ob.DatenEinlesen(Start);

		btExit.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});

	}

	public void DatenEinlesen(int zaehler)
	{
		String[][] labels = new String[9][9];
		labels[0][2] = "Lager 1";
		labels[1][2] = "Lager 2";
		labels[0][3] = "Artikel 1";
		labels[1][3] = "Artikel 2";

		System.out.println("Test DatenEinlesen Zähler:" + zaehler);

		setLagerUndArtikel(labels[zaehler][2], labels[zaehler][3]);

	}

	private void setLagerUndArtikel(String lager, String artikel)
	{
		clearTextFields();
		checkLager = false;
		currLager = lager;
		checkArtikel = false;
		currArtikel = artikel;
		txtLager.setText(lager);
		System.out.println("Test setLuA - Lager: " + lager);
		System.out.println("Test setLuA - Artikel: " + artikel);

	}

	private void clearTextFields()
	{
		txtArtikel.setText(null);
		txtFeldErg.setText(null);
		txtLager.setText(null);
		txtEingabe.setText(null);
	}

	// bei jedem Tastendruck wird gesammte schleife durchlaufen
	// deswegen auch des erste If mit (!checkLager)
	// ist dieses checkLager == true, wird sofot der Artikel überprüft.
	public void actionPerformed(ActionEvent e)

	{
		if (!checkLager)
		{
			checkLager = txtLager.getText().trim().equalsIgnoreCase(txtEingabe.getText().trim());
			txtEingabe.selectAll();

			if (!checkLager)
				txtFeldErg.setText("Lager stimmt nicht überein");
			else
				txtFeldErg.setText("OK");
			txtArtikel.setText(currArtikel);

		}
		else if (!checkArtikel)
		{
			checkArtikel = txtArtikel.getText().trim().equalsIgnoreCase(txtEingabe.getText().trim());
			txtEingabe.selectAll();

			if (!checkArtikel)
				txtFeldErg.setText("Artikel stimmt nicht überein");
		}
		if (checkArtikel && checkLager)
		{
			txtFeldErg.setText("alles okay");

			System.out.println("Ende IF ActionPerformed");
			// okay, du übergibst einen Zählerstand, aber wo wird der denn mal inkrementiert?
			int a = 1;
			DatenEinlesen(a);
		}
	}
}
 
Deine Version sieht sehr gut aus.
Meine bisherigen Versuchen scheiterten immer wieder.

Ich werde mir wieder in Ruhe deinen CODE ansehen, so nach dem Motto
"learning bei doing"

Mit dem Objektorientierten Programmieren habe ich teilweise noch meine Schwierigkeiten, aber langsam aber sicher werde ich doch noch dahinterkommen.

Auf alle Fälle, Danke nochmal!
 
Vielen Dank nochmal für deine Hilfe. Bin mit deinen Ansätzen richtig weit gekommen.

Den Zählerstand implementiere ich in "DatenEinlesen()", um den
nächsten DatenSatz anzeigen zu können.

Um das Thema abzuschließen, und um es auch nicht anderen vorzuenthalten, hier nochmal der Code wie er dann auch wunderbar funktioniert:

Code:
// User Eingaben prüfen

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main extends JFrame implements ActionListener
{
    static JLabel lbText = new JLabel("MOP", 0);
    static JButton btExit = new JButton("Exit");
    static JLabel lblEingabe = new JLabel ("Eingabe");
    static JTextField txtEingabe = new JTextField("");
    static JLabel lblLager = new JLabel("Lagerort");
    static JTextField txtLager = new JTextField("");
    static JLabel lblArtikel = new JLabel("Artikel");
    static JTextField txtArtikel = new JTextField("");
    static JLabel lblFeldErg = new JLabel ("Ergebnis");
    static JTextField txtFeldErg = new JTextField("");

    JPanel Panel = new JPanel();

    private String currLager;
    private String currArtikel;
    private boolean checkLager;
    private boolean checkArtikel;

    // ist die If Anweisung im actionPerformed (am Ende) komplett durchlaufen
    // wird der Zählerstand um 1 erhöht.
    // (If Anweisung komplett u. erfolgreich durchlaufen:
    // Erster Datensatz fertig
    // wird mit 0 initialisiert damit beim Datensatz in der Zeile 0
    // begonnen wird

    private int Zähler = 0;

    public Main()
    {
        super("Main");  // Name des Fensters

        // Action Listener für das EingabeFeld
        txtEingabe.addActionListener(this);
        
        
        Panel.setLayout(new GridLayout(15, 1));
        Panel.add(lbText);
        Panel.add(btExit);
        Panel.add(lblEingabe);
        Panel.add(txtEingabe);
        Panel.add(lblLager);
        Panel.add(txtLager);
        Panel.add(lblArtikel);
        Panel.add(txtArtikel);
        Panel.add(lblFeldErg);
        Panel.add(txtFeldErg);
       
        getContentPane().add("Center", Panel);
        setSize(10, 20);
        pack();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        
    }

    public static void main(String[] argv) throws IOException
    {

        Main ob = new Main();
        ob.DatenEinlesen();

        btExit.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });

    }
 
    public void DatenEinlesen (){


        String[][] labels = new String[9][9];
        labels[0][2] = "Lager 1";
        labels[1][2] = "Lager 2";
        labels[0][3] = "Artikel 1";
        labels[1][3] = "Artikel 2";
        labels[2][2] = "Lager 3";
        labels[2][3] = "Artikel 3";

        System.out.println("Test DatenEinlesen Zähler:" + Zähler);

                 
        setLagerUndArtikel(labels[Zähler][2], labels[Zähler][3]);


    }

    private void setLagerUndArtikel(String lager, String artikel)
    {
        clearTextFields();
        checkLager = false;
        currLager = lager;
        checkArtikel = false;
        currArtikel = artikel;
        txtLager.setText(lager);
        System.out.println("Test setLuA - Lager: " + lager);
        System.out.println("Test setLuA - Artikel: " + artikel);

    }

    private void clearTextFields()
    {
        txtArtikel.setText(null);
        txtFeldErg.setText(null);
        txtLager.setText(null);
        txtEingabe.setText(null);
    }

    // bei jedem Tastendruck wird gesammte schleife durchlaufen
    // deswegen auch des erste If mit (!checkLager)
    // ist dieses checkLager == true, wird sofot der Artikel überprüft.

    public void actionPerformed(ActionEvent e)

    {
       if (!checkLager)
            {
                checkLager = txtLager.getText().trim().equalsIgnoreCase
                                        (txtEingabe.getText().trim());
                txtEingabe.selectAll();

                if (!checkLager)
                    txtFeldErg.setText("Lager stimmt nicht überein");
                else
                    txtFeldErg.setText("OK");
                    txtArtikel.setText(currArtikel);

            }
            else if (!checkArtikel)
            {
                checkArtikel = txtArtikel.getText().trim().equalsIgnoreCase
                                    (txtEingabe.getText().trim());
                txtEingabe.selectAll();

                if (!checkArtikel)
                    txtFeldErg.setText("Artikel stimmt nicht überein");
            }
            if (checkArtikel && checkLager){
                txtFeldErg.setText("alles okay");

                System.out.println("Ende IF ActionPerformed");

                // Daten wieder einlesen, Zählerstand um +1 erhöhen und
                // die Eingangsvariabelen  (Lager, Artikel usw...) für
                // setLagerUndArtikel aktualisieren
                Zähler ++;
                DatenEinlesen();
                // Zähler um +1 erhöhen um nächsten Datensatz anzuzeigen
                !
                
            }
     }
 }

Danke nochmal, super Forum hier. Kann ich nur weiterempfehlen.
Hier werden Sie geholfen ;-)
 
Zurück