JTabbedPane wartet auf Eingabe

Status
Nicht offen für weitere Antworten.
H

Haribald

Gast
Hallo alle Zusammen,

ich hoffe hier jemanden zu finden, der mir bei einem kleinen Problem weiterhilft.

Ich möchte ein Applet programmieren, dass im Wesentlichen aus einer Hauptklasse, abgeleitet von TabbedPane besteht. Die einzelnen TAbs repräsentieren Schritte, die man durchlaufen muss.
Für jedes Tab existiert eine Klasse, die von JSplitPane abgeleitet ist und ins entsprechende TAb gelegt wird.
Der Aufbau ist dabei immer gleich, auf der linken Seite sieht man ein Bild, auf der rechten Seite sind die dazugehörigen Steuerelemente. Die Tabs werden zum gegebenen Zeitpunkt freigeschalten (setEnabledAt).

An folgenden Hürden hänge ich nun:

1. Im ersten Tab (class Load()) soll das Bild eingeladen werden. Dazu öffnet sich nach klicken auf einen Buttone ein Dialog, in dem die Dateiasuwahl stattfindet. der Dialog ist setModal(true);
Das funktioniert auch wunderbar und das Bild wird angezeigt. Das Problem ist nun, dass meine Hauptklasse nicht auf die Dateiengabe wartet.

Code:
class Mainwindow extends JTabbedPane
...
        private Load load=new Load();
...	
           	
	public Mainwindow(){
	
		
		//----------------Tab1 - File einladen-----------------
				
		addTab("Ausgangsdatei", load);	
		setMinimumSize(new Dimension(800,600));
		if(load.start()){

                              //  ...Hier soll nun der Rest initialisiert werden
			
		}
					
	
	}

Die Methode start gibt eigentlich ein true zurück, sobald eine Datei geladen wurde, das PRoblem ist, das juckt die Hauptklasse kein Stück. Die If wird sofort nach dem Appletstart abgehandelt (ist irgendwie auch logisch, da der Rückgabewert ja erst durch das Actionevent gesetzt wird). Wie kann ich auf die Datei warten?

Ich hoffe es ist nachvollziehbar, was ich meine

Vielen Dank schon mal

Gruß

haribald
 

Marco13

Top Contributor
Wenn man einen Modalen Dialog aufmacht, wird gewartet, bis der Dialog wieder zu gemacht wird. Wenn du an einer anderen Stelle auf ein anderes Ereignis waren willst, musst du den Zusammenhang vermutlich genauer beschreiben...
 
G

Guest

Gast
Hallo,

@Marco 13, Danke für deine Antwort

mal ein kleines Beispiel (ziemlich kastriert wegen der Übersicht, ist aber lauffähig):

Es wird ein Tab erstellt, der einen Button zum Bildladen enthält. Das geladene Bild wird auf der linken Seite angezeigt. Ich möchte nun, dass sobald ich Bild geladen habe, das zweite Tab (in Mainwindow) freigeschalten wird.



Class Test:


Code:
import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.*;

public class Test extends JApplet{
	
public void init() {
			
		
		getContentPane().setLayout(new BorderLayout());
		
		
		setSize(new Dimension(800,600));
		getContentPane().add(new Mainwindow());
		show();
}
		

}

Class Mainwindow:
Code:
import javax.swing.*;
import java.awt.Dimension;


public class Mainwindow extends JTabbedPane{
	
	private Load load=new Load();	
		
	public Mainwindow(){
	
		
		//----------------Tab1 - File einladen-----------------
		addTab("Tab1", load);	
		setMinimumSize(new Dimension(800,600));
		if(load.start()){
			JInternalFrame g =new JInternalFrame ("TestFrame");		
			addTab("Tab2", g);
		}
		
	}

}

Closs Load:
Code:
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;

import javax.swing.*;

import java.io.File;
import java.io.IOException;
import java.awt.event.*;

import java.awt.Dimension;

public class Load extends JSplitPane{
	
	private boolean ret;
	private File file=new File("file");
	private BufferedImage image;
	
	private JFileChooser 	chooser	=	new JFileChooser();
	private JDialog			chooserDia=	new JDialog();
		
	private JButton 		loadingButton	= 	new JButton ("Bild laden");
	private JPanel 			loadPanel		=	new JPanel();
		
	private JPanel 			picturePanel	=	new JPanel();
			
	public Load(){
	}
	public boolean start(){
		
		
		setDividerLocation(500);
		picturePanel.setMinimumSize(new Dimension(800,500));
		add(picturePanel,LEFT);
		
		setLoadingPanel();
		add(loadPanel,RIGHT);
				
		loadingButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				
				Container dialogContentPane=chooserDia.getContentPane();
				dialogContentPane.setLayout(new BorderLayout());
				dialogContentPane.add(chooser, BorderLayout.CENTER);
				chooserDia.setModal(true);
				chooserDia.setTitle("Ausgangsdatei wählen");
				chooserDia.pack();
				chooserDia.setLocationRelativeTo(Load.this);
				chooserDia.setVisible(true);
				
			}
		});

		chooser.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String state = (String)e.getActionCommand();

				if(state.equals(JFileChooser.APPROVE_SELECTION)) {
					file= chooser.getSelectedFile();
					display();	
					ret=true;
				}
				else if(
					state.equals(JFileChooser.CANCEL_SELECTION)) {
					JOptionPane.showMessageDialog(
											null, "Canceled");
					ret=false;
				}
				chooserDia.setVisible(false);
				
			}
			
		});
		return ret;	
	}	
	

	private void setLoadingPanel(){
		GridBagLayout gbl=new GridBagLayout();
		GridBagConstraints gbc= new GridBagConstraints();
		
		loadPanel.setLayout(gbl);		
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.gridwidth=1;
		gbc.insets=new Insets(0,0,0,0);
		loadPanel.add(loadingButton,gbc);
	}
	
	private void display(){
		
		try {
			image=ImageIO.read(file);
		}
		catch(IOException e){
					
		}
		
		if(image==null){
			
			JLabel error=new JLabel("Ungültige Datei");
			picturePanel.add(error);
		}
		ImageComponent imageC=new ImageComponent(image);
		picturePanel.add(imageC);
		picturePanel.updateUI();
			
	}

}  

class ImageComponent extends JComponent{
	private Image image;
	public ImageComponent(Image image){
		this.image=image;
		setPreferredSize (new Dimension (image.getWidth(null),image.getHeight(null)));
	}
	public void paintComponent (Graphics g){
		g.drawImage(image,0,0,null);
	}
}
 
H

Haribald

Gast
Ich habe mittlerweile eine nicht sonderlich befriedigende Lösung gefunde, indem ich die Actionevents der LoadKlasse in die Mainwindowklasse verlege (Was unmengen Get-Methoden erfordert). Dies müsste ich dann aber für alle noch folgenen Tabs auch tun, was ich etwas sehr unschön finde. Kennt jemand eine andere Lösung?

Gruß

Haribald
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fiedelbambu Vererbung JTabbedPane vererben in der MainView Java Basics - Anfänger-Themen 0
R JTabbedPane Java Basics - Anfänger-Themen 9
C Tabs in JTabbedPane wechseln, wenn Tabs in eigenen Klassen sind Java Basics - Anfänger-Themen 2
S Verhalten von JTextField in einem JTabbedPane (Register) Java Basics - Anfänger-Themen 6
T Icon auf einem JTabbedPane? Java Basics - Anfänger-Themen 6
J Erste Schritte JTabbedPane sichtbar und unsichtbar Java Basics - Anfänger-Themen 9
B JTabbedPane größe der Tabs ändern Java Basics - Anfänger-Themen 6
R JTabbedPane - Farbe ändern Java Basics - Anfänger-Themen 4
S JTabbedPane jeder Tab in einer eigenen java Datei? Java Basics - Anfänger-Themen 3
I Netbeans - jTabbedPane Hintergrundfarbe ändern Java Basics - Anfänger-Themen 13
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
M JTabbedPane Java Basics - Anfänger-Themen 2
A JTable im JTabbedPane Java Basics - Anfänger-Themen 2
H JTabbedPane: Tab-Wechsel unterbinden ? Java Basics - Anfänger-Themen 6
Spin JTabbedPane Java Basics - Anfänger-Themen 10
Developer_X Jtabbedpane showPane(xpane)? Java Basics - Anfänger-Themen 2
F JTabbedPane auf Ereignisse reagieren Java Basics - Anfänger-Themen 6
G LAF JTabbedPane Java Basics - Anfänger-Themen 3
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
T Dynamischer JTabbedPane Probleme mit JTextArea Java Basics - Anfänger-Themen 2
C jTabbedPane JScrollPane und jPanel Java Basics - Anfänger-Themen 3
C jTabbedPane selektierten Tab markieren Java Basics - Anfänger-Themen 2
G JTabbedPane Java Basics - Anfänger-Themen 3
S aus Resultset JTabbedPane erzeugen Java Basics - Anfänger-Themen 5
N Event auf JTabbedPane abfragen ? Java Basics - Anfänger-Themen 8
N jtabbedpane Java Basics - Anfänger-Themen 4
M JPanel und JTabbedPane macht probleme Java Basics - Anfänger-Themen 5
T JTabbedPane Java Basics - Anfänger-Themen 2
G JTabbedPane zugriff von anderer Methode Java Basics - Anfänger-Themen 2
G Toolbar bei JTabbedPane Java Basics - Anfänger-Themen 5
J Habe gerade erst mit Java begonnen - Frage zu JTabbedPane Java Basics - Anfänger-Themen 3
O JToolBar wird Tab in JTabbedPane statt Toolbar in JFrame Java Basics - Anfänger-Themen 6
S Grafik verschwindet aus JTabbedPane Java Basics - Anfänger-Themen 4
R JTabbedPane wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Fenster schliessen aus JTabbedPane/JPanel Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
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
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
M Threads Program wartet nicht Java Basics - Anfänger-Themen 3
T Warum wartet Java nicht bis die for schleife zu ende ist Java Basics - Anfänger-Themen 18
G wie wartet man auf eine gruppe von Threads? Java Basics - Anfänger-Themen 2
T Wartet Klasse auf Listener? Java Basics - Anfänger-Themen 3
G System.in.read() wartet nicht auf eingabe Java Basics - Anfänger-Themen 1
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben