Window aus anderer Klasse aufrufen

grinquel

Mitglied
Hallo zusammen,

aus einem JFrame (hier: TFrame) soll ein JWindow (hier: Screen) aufgerufen werden.
wenn ich Screen alleine bzw. mit der main-Methode starte zeigt er den Text an
rufe ich das gleiche aus TFrame baut er zwar das Window auf - zeigt aber keinen Text
das verstehe ich nicht ...
ich arbeite mit Eclipse beide Klassen sind in unterschiedlichen .java files aber in einem Package.
(Java Version 1.6 Ubuntu 10.10)

in meinen Java Büchern finde ich keinen Hinweis und auch hier hab nix passendes gefunden.
Danke für Eure Hilfe


Hier der Code von TFrame:
Java:
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TFrame extends JFrame implements ActionListener
{
	JLabel label1, label2;
	JButton butt1, butt2, butt3;
	JPanel cont = new JPanel();
	
	public TFrame()
	{
	    super("Titelanzeige");
	    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	    cont.setLayout (new FlowLayout () );
	    setBounds(100, 100, 600, 300);
	    
	    label1 = new JLabel("Button --> "); cont.add(label1);
	    
	    butt1 = new JButton("Button_1"); cont.add(butt1);
	    butt1.addActionListener(this);   butt1.setActionCommand("1");
	    
	    butt2 = new JButton("Button_2"); cont.add(butt2);
	    butt2.addActionListener(this);   butt2.setActionCommand("2");
	    
	    butt3 = new JButton("Button_3"); cont.add(butt3);
	    butt3.addActionListener(this);   butt3.setActionCommand("3");
	    
	    label2 = new JLabel("Button ? "); cont.add(label2);
	    
	    add(cont);
	    setVisible( true );	
	}	

	public void actionPerformed(ActionEvent e){
		String cmd = e.getActionCommand();
		label2.setText("Button > "+cmd);
		
		Screen intro = new Screen("Button > "+cmd);
		intro.showFor(5000);
	}

	public static void main(String[] args) {
		
		new TFrame();
	}
}

und hier der Screen:
Java:
import javax.swing.*;
import java.awt.*;

public class Screen extends JWindow
{

	public Screen(String text)
	{
		JPanel cp = new JPanel();
		cp.setLayout(new FlowLayout());
		cp.add(new JLabel("Dieser Text -->"));
		cp.add(new JLabel(text));
		this.setContentPane(cp);
	}
	
	public void showFor(int millis)
	{
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation(dim.width / 3, dim.height / 4);
		setSize(dim.width / 3, dim.height / 2);
		this.setVisible(true);
		try {Thread.sleep(millis);} 
		catch (InterruptedException e) {}
		this.setVisible(false);
	}
	
	public static void main(String[] args)
	{
		Screen intro = new Screen("Aufruf aus Main");
		intro.showFor(5000);
		System.exit(0);
	}
}
 
I

IMartin

Gast
Code:
showFor
legt den ausführendenThread schlafen. Im Falle von
Code:
Screen.main(String[] args)
ist das nur der main-Thread, aber im Falle von
Code:
TFrame.main(String[] args)
ist das der EDT und dann "schläft" auch die Benutzeroberfläche.

Eine Möglichkeit:
Code:
javax.swing.Timer
zum Schließen des Screen.
 

grinquel

Mitglied
Hallo zsam,

erstmal Danke IMartin für den nächtlichen Hinweis
ich hab jetzt einiges mit diesem Timer ausprobiert, aber ich hab nich wirklich begriffen wie der funktioniert
also das hier läuft net.
Java:
	public void showFor(int millis)
	{
		showOn();
		System.out.println("showOn"); // bis hier klappt's
		
		ActionListener timact=new ActionListener() {
		      public void actionPerformed(ActionEvent evt) {
		    	//...Perform a task... z.B. //showOff(); ??
		    	  System.out.println("evt"); // da kommt er nie hin
		      }};
		System.out.println("new Timer");		      
		Timer tim = new Timer(millis, timact);
		//tim.setRepeats(false);
		tim.start();
		//showOff(); ??
	}
	
	public void showOn()
	{
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation(dim.width / 3, dim.height / 4);
		setSize(dim.width / 3, dim.height / 2);
		this.setVisible(true);
	}
	public void showOff()
	{
		this.setVisible(false);
	}

so funktioniert's auch - aber wieder nur direkt aus main:

Java:
	public void showFor(int millis)
	{
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation(dim.width / 3, dim.height / 4);
		setSize(dim.width / 3, dim.height / 2);
		this.setVisible(true);
		long now = System.currentTimeMillis();
		long stop = now + millis;
		while (now<=stop) now = System.currentTimeMillis();
		this.setVisible(false);
	}

selbst wenn ich den while loop direkt in TFrame verwende, bekomme ich immer nur ein leeres Window angezeigt:
Java:
		Screen intro = new Screen("Button > "+cmd);
		intro.showOn();
		long now = System.currentTimeMillis();
		long stop = now + 5000;
		while (now<=stop) now = System.currentTimeMillis();
		intro.showOff();

ich werde jetzt JOptionPane als Altenaive verwenden - dann muss der User halt OK klicken ...

trotzdem würde ich mich freuen, wenn sich noch jemand findet, der Licht in dieses DUnkel bringt ...

thx
 
I

IMartin

Gast
Obiger Versuch mit dem Timer funktioniert schon fast:

Ja,
Code:
showOff()
im
Code:
actionPerformed
aufrufen. Über
Code:
TFrame.main(String[] args)
klappt es anschließend. (Auch die Zeile mit dem
Code:
tim.setRepeats(false)
besser reinnehmen.)

Über
Code:
Screen.main(String[] args)
funktioniert es nicht, weil
Code:
showFor(int millis)
nach Starten des Timers sofort zurückkehrt und in
Code:
main
das Programm beendet wird, noch bevor 5 Sekunden verstrichen sind.
 

grinquel

Mitglied
Hallo IMartin,

vielen Dank für Deine nochmalige Intervention - hat mir geholfen das ganze zu verstehn
vor allem der 2. Satz, denn ich hab's dann gar nicht mehr aus TFrame probiert
wenn ich mit dem while loop den System.exit in Screen.main verzögere, dann tut's da auch :)

für alle anderen nach Erkenntnis Suchenden - hier nochmal der funktionierende Abschnitt
mit Kommentaren - ich hoff ich hab alles richtig verstanden.

frohes Neues

Java:
	public void showFor(int millis)
	{
	    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
	    setLocation(dim.width / 3, dim.height / 4);
	    setSize(dim.width / 3, dim.height / 2);
	    showOn();
        
        ActionListener timact=new ActionListener() {           // den Aufpasser timact instanziieren
              public void actionPerformed(ActionEvent evt) {   // wenn diese ein Event empfängt
            	  showOff();  // <<<------------------------- wir diese Funktion aufgerufen
              }};             // soweit der Teil der wartet, dass was passiert
             
        Timer tim = new Timer(millis, timact); // instanziieren des Timers, der den Event erzeugt
                                              // millis = Zeitabstand zwischen den Events
                                             // timecat = der Aufpasser von oben
        tim.setRepeats(false); // legt fest, dass der Timer nur einen Event erzeugt
        tim.start();          // und hier läuft er Timer los 
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
S Window Builder AWT, Swing, JavaFX & SWT 20
I Modal Window AWT, Swing, JavaFX & SWT 26
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
C JavaFX Window-Position AWT, Swing, JavaFX & SWT 3
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
Z Window Builder - Labels mit setText befüllen AWT, Swing, JavaFX & SWT 11
B JavaFX Werte aus eingefügtem Window lesen AWT, Swing, JavaFX & SWT 0
EisKaffee Swing Window Builder installieren AWT, Swing, JavaFX & SWT 1
D SWT Window passt Größe nicht an AWT, Swing, JavaFX & SWT 4
H Drag component out of window AWT, Swing, JavaFX & SWT 1
B Swing "Window Manager" - Gedankenprobleme AWT, Swing, JavaFX & SWT 9
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
H Swing Google Window-Builder AWT, Swing, JavaFX & SWT 4
S Flackerndes Window beim DnD AWT, Swing, JavaFX & SWT 37
D SWT CheckBox auslesen (Window Builder Pro) AWT, Swing, JavaFX & SWT 2
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
B Swing Window nur bedingt im Vordergrund AWT, Swing, JavaFX & SWT 5
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Swing Sequenz aus farbigen Quadraten in Window anzeigen AWT, Swing, JavaFX & SWT 11
J Fehlermeldung adding a window to a container AWT, Swing, JavaFX & SWT 9
L AWT Window, Dialog und verschiedene Betriebssysteme AWT, Swing, JavaFX & SWT 2
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10
J Swing kann window nicht übergeben AWT, Swing, JavaFX & SWT 14
L Fenster inaktiv setzen / deaktivieren (unable to close window) AWT, Swing, JavaFX & SWT 16
data89 Code-completion-window erzeugen - wie? AWT, Swing, JavaFX & SWT 2
Spin Window Event Beispiel AWT, Swing, JavaFX & SWT 6
H Eclipse View / Window Layout AWT, Swing, JavaFX & SWT 3
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
M "Window"-Bibilotheck AWT, Swing, JavaFX & SWT 4
I JFrame-Anmerkung "Java Applet Window" entfernen AWT, Swing, JavaFX & SWT 4
T Synchrones Window-verschieben AWT, Swing, JavaFX & SWT 4
K Prompt window in Java? AWT, Swing, JavaFX & SWT 3
S Window über beide Bildschirme maximieren AWT, Swing, JavaFX & SWT 8
F Window#setAlwaysOnTop und Java 1.4.x AWT, Swing, JavaFX & SWT 5
M createImage in Window-Unterklasse AWT, Swing, JavaFX & SWT 4
M Window unterteilen AWT, Swing, JavaFX & SWT 9
R JFrame -- Variable Positionierung durch Window Manager? AWT, Swing, JavaFX & SWT 2
G Window in Taskleiste AWT, Swing, JavaFX & SWT 13
G Window wird angezeigt, nur der Inhalt nicht AWT, Swing, JavaFX & SWT 5
S Window Listener, Exit, bin am Verzweifeln AWT, Swing, JavaFX & SWT 24
U Reaktion auf closing window AWT, Swing, JavaFX & SWT 7
G Listener fuer Window Close AWT, Swing, JavaFX & SWT 2
M not serializable: sun.awt.window.WImage AWT, Swing, JavaFX & SWT 8
N frage ueber D&D von window wie in einige IDE AWT, Swing, JavaFX & SWT 7
P Transparentes Window/JFrame (mit SkinLF?) AWT, Swing, JavaFX & SWT 10
R "Statusbar" - JFrame mit 'Java Applet Window' AWT, Swing, JavaFX & SWT 18
S Performance-Problem: JTextArea als Logging-Window AWT, Swing, JavaFX & SWT 8
J Window Listener funzt nicht richtig AWT, Swing, JavaFX & SWT 5
R Die (J)Frame window listener AWT, Swing, JavaFX & SWT 7
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
Ø Swing Button in anderer Klassen ausführen AWT, Swing, JavaFX & SWT 6
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
S per Button Variableninhalt aus anderer Klasse holen AWT, Swing, JavaFX & SWT 3
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
J CellFactory in Abhängigkeit von anderer Zelle AWT, Swing, JavaFX & SWT 4
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
H Swing Arbeitsspeicherauslastung anderer Programme grafisch darstellen AWT, Swing, JavaFX & SWT 16
M Swing Array aus anderer Klasse AWT, Swing, JavaFX & SWT 6
H JTable von anderer Klasse aus füllen AWT, Swing, JavaFX & SWT 6
Z Bei Klick auf JButton soll ein anderer JButton erscheinen AWT, Swing, JavaFX & SWT 4
D JSplitPane -> setRightComponent aus anderer Klasse AWT, Swing, JavaFX & SWT 3
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
J JPanel mit anderem Panel aus anderer Klasse setzen AWT, Swing, JavaFX & SWT 4
M Swing JFrame aus anderer Klasse starten/anzeigen AWT, Swing, JavaFX & SWT 2
A Applet main class aus anderer main class aufrufen AWT, Swing, JavaFX & SWT 15
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
D Swing JTextField aus anderer Klasse aktualisieren AWT, Swing, JavaFX & SWT 2
T Fragmente anderer Fenster im Programmfenster AWT, Swing, JavaFX & SWT 6
P Datenelement anderer Klasse in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
N jcomboBox anderer Wert als Anzeige AWT, Swing, JavaFX & SWT 6
W Daten auf Textfeld in anderer Klasse verwenden AWT, Swing, JavaFX & SWT 4
J Swing JTable, jede Zelle ein anderer Title im TitledBorder AWT, Swing, JavaFX & SWT 5
A Zeichnen auf JFrame aus anderer class heraus AWT, Swing, JavaFX & SWT 12
C private Panel anderer Klasse verändern AWT, Swing, JavaFX & SWT 11
Airwolf89 Swing Von anderer Klasse auf Eigenschaften einer Komponente zugreifen AWT, Swing, JavaFX & SWT 5
kniffel JMenuBar aus anderer Klasse AWT, Swing, JavaFX & SWT 10
M Swing JTextFeld Wert in anderer Klasse aufrufen AWT, Swing, JavaFX & SWT 13
G JTable in Spalte von anderer JTable nicht editierbar AWT, Swing, JavaFX & SWT 7
A Strings an Textarea anderer Klasse append(en) AWT, Swing, JavaFX & SWT 12
H JPanel aus anderer Klasse laden? AWT, Swing, JavaFX & SWT 4
G paint() Methode aus anderer klasse aufrufen? AWT, Swing, JavaFX & SWT 6
E etwas anderer rahmen. AWT, Swing, JavaFX & SWT 2
K Auf Textfeld von anderer Klasse aus zugreifen AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Neue Themen


Oben