Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden

Bluedaishi

Bekanntes Mitglied
Hallo alle zusammen,

ich hab ein großes Problem an dem ich schon seit Tagen fest sitze und nicht weiter komme .
Mein Problem ich habe eine Textdatei in dem nach eine bestimmten Zeile gesucht wird,
über eine if Anweisung frage ich die größe des Strings ab ob er null ist oder nicht.
Wenn er null ist soll sich ein neues Auswahl Fenster öffnen und die for schleife anhalten solange bis
im Auswahl Fenster eine Auswahl getätigt was mit einem Ok Button bestätigt werden muss.
Durch das Betätigen des Ok Buttons soll das Auswahl Fenster wieder schliessen und die for schleife weiter laufen.

Mein Problem ist das for schleife immer weiter läuft aber und sich nur ein Auswahl Fenster öffnet

Könnte mir vielleicht jemand weiter helfen wäre super von euch

Danke schön
 

dayaftereh

Top Contributor
Schau mal hier:

Java:
import java.lang.reflect.InvocationTargetException;

import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;


public class Test implements Runnable{
	
	private boolean running = false;
	
	private int iterationen = 100*100;

	@Override
	public void run() {		
		this.running = true;
		// die for Schleife für 100*100 Iterationen
		for (int i = 0; i < this.iterationen; i++) {
			// ob Abgebrochen werden soll
			if(this.running == false){
				// stop vor schleife
				break;
			}
			
			// wenn i durch 10 teilbar ist
			if(i % 10 == 0){
				try {
					// dialog anziegen
					openDialog(i);
				} catch (Exception e) {					
					e.printStackTrace();
				}				
			}
			System.out.println("Index: " + i);			
		}	
		// ende ausgeben
		System.out.println("End!");
	}

	private void openDialog(final int i) throws InterruptedException, InvocationTargetException {
		// Dialog mit Hilfe des EventDispatchers Öffnen und Warten
		SwingUtilities.invokeAndWait(new Runnable() {			
			@Override
			public void run() {
				// Dialog öffnen, und so lange blockieren
				String s = JOptionPane.showInputDialog("Index: " + i);		
				// wenn Abbruch = stoppen
				if(s == null){
					running = false;
				}
			}
		});
	}
	
	public static void main(String[] args) {
		// runs Test
		Test test = new Test();
		test.run();
	}

}
 

Bluedaishi

Bekanntes Mitglied
hey schon mal vielen Dank für die schnelle Antwort ich werde gleich mal versuchen
hier etwas Quelltext schreiben vielleicht kommen wir ann weiter.
 

Bluedaishi

Bekanntes Mitglied
ist nur ein ausschnitt sonst wird es zuviel


Java:
						raf.seek(long_hallennr);
						line = raf.readLine();
						line = line.substring(15, 24);
						line = line.replaceFirst("0+", "").trim();
						
						System.out.println(line.length());
						
						if(line.length() == 0){
		
						new FirmaAuswahl(dateiName);
						Thread.sleep( 4000 );                   hier soll die for schleife warten bis in der anderen Klassen 
                                                                                                der OK button gedrückt wird
							

						
						}
 

dayaftereh

Top Contributor
Also ich glaube er versucht Zeilenweise aus einer Text Datei zu lesen. Fall die Text Zeile leer ist, will er ein Dialog Anzeigen und den lese Prozess stoppen. Mit Hilfe des Dialoges einen Wert eingeben und weiter lesen.
 

Bluedaishi

Bekanntes Mitglied
Hey hätte ja nicht gedacht das ich gleich soviel hilfe bekomme :) ich poste dann doch mal den Quelltext :)


Java:
public class StatistikWerteLesen {
	
	public static String Hersteller = null;
	public static String Geraete_typ = null;
	public static String Hallen_nr = null;
	public static String Hallen_nr1 = null;
	public static String Geraete_nr = null;
	public static String Zulassungs_nr = null;
	public static String Bauart = null;
	public static String Streifen_nr = null;
	public static String Kass_datum = null;
	public static String KassLe_datum = null;
	public static String Einwurf_sum = null;
	public static String Auswurf_sum = null;
	public static String Saldo1_sum = null;
	public static String EKkasse_sum = null;
	public static String Saldo2_sum = null;
	public static String dateiWGS = null;
	public static String[] firmaList;
	public static Thread t = new Thread();
	
	public StatistikWerteLesen() throws Exception {
		
		String[] dateiInhalte = EinLesenStreifenInhalt.dateiInhalte;
		String[] dateiNamen = EinLesenStreifenNamen.dateiListe;
		String Verz = DatenImport.Verz + "\\";
		
		
		long long_hersteller = 0L;
		long long_geraetetyp = 0L;
		long long_hallennr = 0L;
		long long_geraetenr = 0L;
		long long_zulassungsnr = 0L;
		long long_bauart = 0L;
		long long_streifennr = 0L;
		long long_kassdatum = 0L;
		long long_kassdatumle = 0L;
		long long_einwurf = 0L;
		long long_auswurf = 0L;
		long long_saldo1 = 0L;
		long long_ekkasse = 0L;
		long long_saldo2 = 0L;
		
		getDBFirmen();
	
		
		for (int i = 0; i < dateiInhalte.length; i++ ) {
	
			
				
		 final String dateiName = dateiNamen[i];
		 final String dateiInhalt = dateiInhalte[i];
		  
			File file = new File(Verz + dateiNamen[i]);
			
			RandomAccessFile raf = null;
			
			try {
				raf = new RandomAccessFile(file, "r");
				String line = null;

				while ((line = raf.readLine()) != null) {
					if (line.contains("\033K!")) {
						long_hersteller = raf.getFilePointer();
					}
					if (line.contains("\033K\"")) {
						long_geraetetyp = raf.getFilePointer();
					}
					if (line.contains("\033K#")) {
						long_hallennr = raf.getFilePointer();
					}
					if (line.contains("\033K$")) {
						long_geraetenr = raf.getFilePointer();
					}
					if (line.contains("\033KC")) {
						long_zulassungsnr = raf.getFilePointer();
					}
					if (line.contains("\033K)")) {
						long_bauart = raf.getFilePointer();
					}
					if (line.contains("\033K%")) {
						long_streifennr = raf.getFilePointer();
					}
					if (line.contains("\033K&")) {
						long_kassdatum = raf.getFilePointer();
					}
					if (line.contains("\033K'")) {
						long_kassdatumle = raf.getFilePointer();
					}
					if (line.contains("\033KQ")) {
						long_einwurf = raf.getFilePointer();
					}
					if (line.contains("\033KR")) {
						long_auswurf = raf.getFilePointer();
					}
					if (line.contains("\033KS")) {
						long_saldo1 = raf.getFilePointer();
					}
					if (line.contains("\033KB")) {
						long_ekkasse = raf.getFilePointer();
					}
					if (line.contains("\033KX")) {
						long_saldo2 = raf.getFilePointer();
						break;
					}

				}
				
				raf.seek(long_hersteller);
				line = raf.readLine();
				if (line.contains("GEWETE")) {
				
				}else{
						Hersteller = line;

						raf.seek(long_geraetetyp);
						line = raf.readLine();
						Geraete_typ = line;

						raf.seek(long_hallennr);
						line = raf.readLine();
						line = line.substring(15, 24);
						line = line.replaceFirst("0+", "").trim();
						
						System.out.println(line.length());
						
						if(line.length() == 0){
		
						new FirmaAuswahl(dateiName);
						Thread.sleep( 4000 ); 
						//	das mit dem Thread.sleep funktioniert gefällt mir aber nicht 
                                                //      weil das Auswahl Fenster beim nächsten mal überschrieben wird 
                                                // hier an dieser Stelle soll die Klasse FirmaAuswahl aufgerufen werden
 						// und hier soll es erst weiter gehen wenn eine Firma ausgewählt wurde
                                                //
						}
						
						if(line.length() > 0 ){
						
						raf.seek(long_hallennr);
						line = raf.readLine();
						line = line.substring(15, 24);
						line = line.replaceFirst("0+", "").trim();
						Hallen_nr = line;
 

Bluedaishi

Bekanntes Mitglied
Das nutz mir nicht viel weil die Firmen in einer Mysql Datenbank liegen . Deshalb habe ich in dem Auswahl Fenster
eine JList worin die Firmen enthalten sind . :)
 

Bluedaishi

Bekanntes Mitglied
Moment :) nochmal langsam :) sonst reden wir an einander vorbei :)


also Ich lese einen text ein.
suche nach bestimmten text zeilen
die werte die ich brauche füge ich in eine DB ein
wenn die Zeile leer ist soll sich das Auswahl Fenster Öffnen
die Firmen aus der DB holen damit ich den Text der mir in einer
TextArea angezeigt wird einer Firma zu ordnen kann

so ist der Plan :)
 

Bluedaishi

Bekanntes Mitglied
Das funktioniert auch schon soweit nur das ich das nicht mit dem Thread.sleep(); haben möchte ,denn wenn der nächste text kommt und an der stelle auch null ist überschreibt er das geöffnete fenster einfach . :-(
 

dayaftereh

Top Contributor
Ja ok, also machst du dein Fenster als Modalen Dialog! und rufst ihn so auf:
Java:
SwingUtilities.invokeAndWait(new Runnable() {           
   @Override
   public void run() {
      new FirmaAuswahl(...);
   }
});

Das Blockiert solange wie der Dialog anzeiget wird!
 

Bluedaishi

Bekanntes Mitglied
das bietet mir eclipse nicht an .
hab das soweit übernommen was du mir geraten hast nur leider öffnet sich das Auswahl Fenster nicht
 

dayaftereh

Top Contributor
Also du hast deine [JAPI]JList[/JAPI] mit den Firmen auf eine [JAPI]JDialog[/JAPI] jetzt? Wenn ja musst du nur setVisable(true) für die Anzeige machen.
[EDIT]Kein [JAPI]JFrame[/JAPI] sonder [JAPI]JDialog[/JAPI][/EDIT]
 

Bluedaishi

Bekanntes Mitglied
SSSSSSSSSUpperrrrr Danke schön für deine Hilfe es Funktioniert jetzt das setVisible(true) war an falscher stelle gesetzt :) :)
nochmals vielen dank :)
 

Bluedaishi

Bekanntes Mitglied
Hab mich wohl zu früh gefreut :) jetzt hab ich das problem das ich den String mit dem Dateinamen nicht an die innere Klasse über gegeben kann .
 

Bluedaishi

Bekanntes Mitglied
Also ich meine ich kann die andere klasse nicht mit
Java:
new FirmaAuswahl(dateiName);
aufrufen
dazu müsste er dann final sein nur dann hab ich immer den selben text :-(
 

dayaftereh

Top Contributor
Ich würde das so machen:
Java:
private void openFirmaAuswahl(final String dateiName) throws Exception {        
   SwingUtilities.invokeAndWait(new Runnable() {           
      @Override
       public void run() {
          new FirmaAuswahl(dateiName);
       }
    });
}
 

Bluedaishi

Bekanntes Mitglied
Ja das hab ich schon versucht . Aber Eclipse gibt einen Fehler aus das ich den String nicht in eine innere Klasse übergeben kann und muss ihn deshalb auf final setzten .
Nur dann hab ich wie gesagt das Problem das ich immer den selben text sehe und auch die selben werte in die DB eingetragen werden :-(
 

Bluedaishi

Bekanntes Mitglied
Java:
	if(line.length() == 0){
		
							
							SwingUtilities.invokeAndWait(new Runnable(){
							@Override
							public void run(){
									FirmaAuswahl.textStreifen.append(dateiInhalt);
									new FirmaAuswahl(dateiName);
							}
							});
						}
 

Michael...

Top Contributor

Michael...

Top Contributor
das Problem ist das ich da nicht so ganz weiter komme :-(
Ich versteh Dein Problem nicht.
Hier mal eine Demo die so abläuft, wie - ich es verstanden habe - Du es haben willst.
Statt von der Datei zu lesen erzeuge ich einfach eine Zufallszahl zw. 0 und 9 (wobei 7 == leere Zeile) und "gespeichert" wird, statt in der DB in einer TextArea:
Java:
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Blub {
	public static void main(String[] s) {
		new Blub().startDemo();
	}

	private JTextArea area;
	private SelectionDialog dialog;

	public void startDemo() {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		area = new JTextArea();
		frame.add(new JScrollPane(area));
		frame.setBounds(0, 0, 300, 200);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);

		dialog = new SelectionDialog(frame);

		// Simulate reading
		new Thread(new Runnable() {
			private Random rnd = new Random();

			public void run() {
				while (true) {
					try {
						// generate dummy value
						int value = rnd.nextInt(10); //instead of reading a real file
						if (value == 7) { // line is empty
							dialog.setVisible(true);
							Object manualValue = dialog.getSelectedValue();
							area.setText("manual input: " + manualValue + "\n" + area.getText());
						} else { //line is not empty
							area.setText("read: " + value + "\n" + area.getText());
						}
						Thread.sleep(500);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}).start();
	}
}

class SelectionDialog extends JDialog {
	private DefaultListModel model;
	private JList list;

	public SelectionDialog(Frame frame) {
		super(frame, true); // modal
		model = new DefaultListModel();
		for (int i = 0; i < 26; i++) {
			model.addElement("Element " + Character.toString((char) (65 + i)));
		}
		list = new JList(model);
		this.add(new JScrollPane(list));
		JButton button = new JButton("OK");
		this.add(button, BorderLayout.SOUTH);
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setVisible(false);
			}
		});
		
		this.pack();
		this.setLocationRelativeTo(frame);
	}

	public Object getSelectedValue() {
		return list.getSelectedValue();
	}
}
 

Bluedaishi

Bekanntes Mitglied
Hi Michael,

vielen dank für deine Hilfe . Hab das problem anders gelöst und zwar mit getter und setter :)

ich in der anderen klasse FirmaAuswahl mit einem Actionlistener Arbeite
kann ich den dateinamen nicht direkt übergeben .
Java:
	if(line.length() == 0){
							
								StatistikWerteLesen.setDatei(dateiName);
								StatistikWerteLesen.getDatei();
								
								StatistikWerteLesen.setDateiInhalt(dateiInhalt);
								StatistikWerteLesen.getDateiInhalt();
							
							  SwingUtilities.invokeAndWait(new Runnable() {           

								@Override
							       public void run() {
							    	  
									FirmaAuswahl.textStreifen.append(dateiInhalt);
							    	new FirmaAuswahl();
									}
							  	});
							}


so das ist meine Lösung die sehr gut Funktioniert :)
vielen dank nochmal an alle die mir geholfen haben :)

so ich werd mich jetzt an eine JTable mach hat da vielleicht jemand Ahnung von ich hab hier schon im Forum in der Hilfe Abteilung nach gesehen doch so wirklich schlau daraus bin ich nicht geworden :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Threads GUI über Hintergrund-Thread aktualisieren Java Basics - Anfänger-Themen 6
xehpuk In JUnit über eigenen Thread testen Java Basics - Anfänger-Themen 3
G JAVA- Prüfungsaufgabe über Thread Java Basics - Anfänger-Themen 6
D Zugriff auf GUI über Thread Java Basics - Anfänger-Themen 8
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 0
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
ralfb1105 Frage zu Thread Synchronisation mit wait() und notify() Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
J Thread Handling Java Basics - Anfänger-Themen 9
A Problem mit Thread.sleep Java Basics - Anfänger-Themen 4
C Thread in Methode + raus aus der Schleife Java Basics - Anfänger-Themen 10
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
B Thread Problem Java Basics - Anfänger-Themen 7
N KeyListener in Thread Java Basics - Anfänger-Themen 0
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
D Ausgeben welcher Thread gerade Arbeitet Java Basics - Anfänger-Themen 8
N Threads Thread-Fehler Java Basics - Anfänger-Themen 2
F Thread um Uhrzeit ausführen Java Basics - Anfänger-Themen 5
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
J Exception in thread "main" Java Basics - Anfänger-Themen 1
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
I Thread.sleep (1000); Java Basics - Anfänger-Themen 1
M Threads Jede Klasse einem Thread zuweisen Java Basics - Anfänger-Themen 7
J Java Thread cancel() und wiederbeleben Java Basics - Anfänger-Themen 4
J BouncingBalls 1 Thread Java Basics - Anfänger-Themen 3
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
J Timer oder Thread programmieren ? Java Basics - Anfänger-Themen 10
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Thread Pool mit Work Stealing Java Basics - Anfänger-Themen 1
R Java Thread Java Basics - Anfänger-Themen 10
J Welche Methoden laufen im neuen thread ?? Java Basics - Anfänger-Themen 9
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
K Thread - Methoden in die run Methode Schreiben Java Basics - Anfänger-Themen 5
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
S Methoden Multi-Thread und Methoden Objects. Java Basics - Anfänger-Themen 1
J Thread erstellen (BlueJ Projekt) Java Basics - Anfänger-Themen 3
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
F Threads Variable aus einem Thread in main Methode? Java Basics - Anfänger-Themen 9
K Exception in thread "main" Java Basics - Anfänger-Themen 7
L Thread-Frage Java Basics - Anfänger-Themen 2
E Was ist ein idle-thread? Java Basics - Anfänger-Themen 1
D Exception in thread "AWT-EventQueue-0" Java Basics - Anfänger-Themen 8
J Threads Prozess in Thread auslagern Java Basics - Anfänger-Themen 2
G Thread mehrmals starten und schliessen Java Basics - Anfänger-Themen 6
F Thread Koordination (Vorteile/Nachteile) Java Basics - Anfänger-Themen 0
O Thread aus dem Thread stoppen Java Basics - Anfänger-Themen 6
O Swingworker/Thread Java Basics - Anfänger-Themen 3
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben