JDialog, Owner JFrame ZIEL: nciht in der taskbar

Status
Nicht offen für weitere Antworten.
A

adsfasfasfas

Gast
Hi,
ich will eine Binäre Uhr schreiben, die ganz links oben am Bildschirm die Uhrzeit binär anzeigt.

Dazu habe ich alles geschrieben, doch schafft ich es nicht richtig das JFrame richtig an das JDialog zu übergeben

Mein Versuch:
Code:
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class BinaryClock implements Runnable
{
	JDialog d;
	JFrame f;
	private static final long serialVersionUID = 1L;
	boolean running = true;
	Thread t =  new Thread(this);
	GregorianCalendar gc = new GregorianCalendar();
	JLabel l = new JLabel();
	
	public static void main(String[] args) 
	{
		new BinaryClock();
	}
	
	public BinaryClock() 
	{
		t.start();
		f = new JFrame();
		d = new JDialog(f);
		f.setUndecorated(true);
		f.add(l);
		f.pack();
		d.setVisible(true);
	}

	public void run() 
	{
		try 
		{
			while(running) 
			{
				paint();
				Thread.sleep(1000);
			}
		} 
		catch (InterruptedException e) 
		{
		}
	}
	
	public void paint()
	{
		gc.setTimeInMillis(System.currentTimeMillis());
		String second = Integer.toBinaryString(gc.get(Calendar.SECOND));
		String minute = Integer.toBinaryString(gc.get(Calendar.MINUTE));
		String hour = Integer.toBinaryString(gc.get(Calendar.HOUR_OF_DAY));
		l.setText(hour + ":" + minute + ":" + second);
	}

	void stop(Thread t) 
	{
		running = false;
		t.interrupt();
	}
}

Hier wird die Uhrzeit nciht mehr angezeigt

Als JFrame funktioniert es, es ist aber in der Taskleiste:

Code:
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class BinaryClock extends JFrame implements Runnable
{
	private static final long serialVersionUID = 1L;
	boolean running = true;
	Thread t =  new Thread(this);
	GregorianCalendar gc = new GregorianCalendar();
	JLabel l = new JLabel();
	
	public static void main(String[] args) 
	{
		new BinaryClock();
	}
	
	public BinaryClock() 
	{
		t.start();
		this.setUndecorated(true);
		add(l);
		pack();
		setVisible(true);
	}

	public void run() 
	{
		try 
		{
			while(running) 
			{
				paint();
				Thread.sleep(1000);
			}
		} 
		catch (InterruptedException e) 
		{
		}
	}
	
	public void paint()
	{
		gc.setTimeInMillis(System.currentTimeMillis());
		String second = Integer.toBinaryString(gc.get(Calendar.SECOND));
		String minute = Integer.toBinaryString(gc.get(Calendar.MINUTE));
		String hour = Integer.toBinaryString(gc.get(Calendar.HOUR_OF_DAY));
		l.setText(hour + ":" + minute + ":" + second);
	}

	void stop(Thread t) 
	{
		running = false;
		t.interrupt();
	}
}

Was mache ich hierbei falsch?

Danke
Mfg
adsfasfasfas
 
G

Guest

Gast
Und wie mache ich es, wenn ich auf das JDialog draufklicke das ich es verschieben kann?
 
G

Guest

Gast
Ich wollte es jetzt einfach so lösen, das ich die Titelleiste an/ausblenden kann, um es zu verschieben doch bekomme ich eine mir unbekannte Exception, was mache ich hierbei falsch?


Code:
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The dialog is displayable.
	at java.awt.Dialog.setUndecorated(Unknown Source)
	at BinaryClock$3.actionPerformed(BinaryClock.java:44)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The dialog is displayable.
	at java.awt.Dialog.setUndecorated(Unknown Source)
	at BinaryClock$2.actionPerformed(BinaryClock.java:38)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


Hier der Source dazu
Code:
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
import javax.swing.*;

public class BinaryClock implements Runnable
{
   JDialog d;
   private static final long serialVersionUID = 1L;
   boolean running = true;
   Thread t =  new Thread(this);
   GregorianCalendar gc = new GregorianCalendar();
   JLabel l = new JLabel();
   JPopupMenu pop;

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

   @SuppressWarnings("serial")
public BinaryClock()
   {
      t.start();
		d = new JDialog((JFrame) null);

		pop = new JPopupMenu("Menü");

		pop.add(new AbstractAction("Schliessen") {
			public void actionPerformed(ActionEvent e) {
				System.exit(1);
			}
		});
		
		pop.add(new AbstractAction("Titelleiste anzeigen") {
			public void actionPerformed(ActionEvent e) {
				d.setUndecorated(true);
			}
		});

		pop.add(new AbstractAction("Titelleiste entfernen") {
			public void actionPerformed(ActionEvent e) {
				d.setUndecorated(false);
			}
		});
		
		d.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				if (e.isPopupTrigger())
					pop.show(e.getComponent(), e.getX(), e.getY());
			}

			public void mouseReleased(MouseEvent e) {
				if (e.isPopupTrigger())
					pop.show(e.getComponent(), e.getX(), e.getY());
			}
		});

		d.setUndecorated(false);
		d.add(pop);
		d.add(l);
		d.pack();
		d.setVisible(true);
   }

   public void run()
   {
      try
      {
         while(running)
         {
            paint();
            Thread.sleep(1000);
         }
      }
      catch (InterruptedException e)
      {
      }
   }

   public void paint()
   {
      gc.setTimeInMillis(System.currentTimeMillis());
      String second = Integer.toBinaryString(gc.get(Calendar.SECOND));
      String minute = Integer.toBinaryString(gc.get(Calendar.MINUTE));
      String hour = Integer.toBinaryString(gc.get(Calendar.HOUR_OF_DAY));
      l.setText(hour + ":" + minute + ":" + second);
   }

   void stop(Thread t)
   {
      running = false;
      t.interrupt();
   }
}
 

hdi

Top Contributor
Du kannst die Dekorierung nicht ein-/abschalten während der Dialog sichtbar ist:

Code:
d.setVisible(false);
// decoration ändern
d.setVisible(true);
 
G

Guest

Gast
Danke, nur daran lag es anscheinend nicht... =(

Code:
pop.add(new AbstractAction("Titelleiste anzeigen") {
			public void actionPerformed(ActionEvent e) {
				d.setVisible(false);
				d.setUndecorated(true);
				d.setVisible(true);
				
			}
		});

		pop.add(new AbstractAction("Titelleiste entfernen") {
			public void actionPerformed(ActionEvent e) {
				d.setVisible(false);
				d.setUndecorated(false);
				d.setVisible(true);
			}
		});

Exception:

Code:
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The dialog is displayable.
	at java.awt.Dialog.setUndecorated(Unknown Source)
	at BinaryClock$3.actionPerformed(BinaryClock.java:48)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
G

Gast

Gast
Ich habe jetzt noch die Prüfung gemacht, d.setVisible(false) macht den dialog nicht nicht displayable.... vor und danach kam true zurück wenn ich mit d.isDisplayAble nachfrage... hmm...
 
G

Guest

Gast
Ich verzeweilfel , von de reinene exception zur andren

Code:
pop.add(new AbstractAction("Titelleiste entfernen") {
			public void actionPerformed(ActionEvent e) {
				System.out.println(d.isDisplayable()); //true
				System.out.println(d.getBufferStrategy()); //java.awt.Component$FlipSubRegionBufferStrategy@787171
				d.dispose();
				System.out.println(d.isDisplayable()); //false
				d.setUndecorated(false); 
				d.createBufferStrategy(2); //neue exception java.lang.IllegalStateException: Buffers have not been created
				d.setVisible(true);
			}
		});
 
G

Guest

Gast
Ok, hab jetzt die Antwort, für alle die das geliche Problem irgendwann haben:


Component.setVisible(false) != Component.dispose() !!!!!!!
also dispose verwenden...
jetzt undecoreted auf das was man will
jetzt für das canvas den peer erschaffen
den BufferStrategy createn (numbuffer = 2) ka warum
jetzt das ganze bei bedarf neu packen das sosnt das frame die grösse des "innenlebens" des frames annimmt + die grösse der titelleiste
nun kann man entweder (veraltet Component.show()) oder Component.setVisible(true) setzten

code:

Code:
pop.add(new AbstractAction("Titelleiste entfernen") {
			public void actionPerformed(ActionEvent e) {
				d.dispose();
				d.setUndecorated(true); 
				d.addNotify();
				d.createBufferStrategy(2); //neue exception java.lang.IllegalStateException: Buffers have not been created
				d.pack();
				d.setVisible(true);
			}
		});

-.-
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
A JDialog öffnet sich nicht Java Basics - Anfänger-Themen 7
D JDialog schließen Java Basics - Anfänger-Themen 11
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
H JDialog Problem Java Basics - Anfänger-Themen 10
H Problem JDialog.setVisible Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
I JDialog Problem Java Basics - Anfänger-Themen 37
J Icon JDialog mit Java 1.4 Java Basics - Anfänger-Themen 2
M JDialog Modality Java Basics - Anfänger-Themen 7
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
S JDialog und SwingUtilities Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
M JDialog soll was an die AufruferKlasse zurück geben Java Basics - Anfänger-Themen 3
S Layout JDialog Java Basics - Anfänger-Themen 9
S eigene Methoden in JDialog Java Basics - Anfänger-Themen 13
pun Im JDialog auf Objekt im Parent JFrame zugreifen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
S Datenzugriff auf JDialog! Java Basics - Anfänger-Themen 8
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
B Grafiken/Bilder mit Netbeans in Jdialog Java Basics - Anfänger-Themen 7
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
A Klasse erbot von JDialog. Kontruktor? Java Basics - Anfänger-Themen 4
M Hauptfenster nicht wählbar bei offenem JDialog Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
B Fenstergröße variiert bei JDialog.pack()-Aufruf Java Basics - Anfänger-Themen 10
S JDialog während automatischer Dateisuche einblenden Java Basics - Anfänger-Themen 6
J JDialog zeigt nichts an Java Basics - Anfänger-Themen 4
C JDialog Werte nach Frame übergeben Java Basics - Anfänger-Themen 10
G JDialog + setOpaque Java Basics - Anfänger-Themen 5
G JDialog auf Jpanel statt Frame? Java Basics - Anfänger-Themen 4
N Werte von JDialog entgegennehmen Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
T Register im JDialog Java Basics - Anfänger-Themen 9
G JDialog übers X schliessen und Programm beenden Java Basics - Anfänger-Themen 4
C Fehlermeldungen umleiten auf JDialog Java Basics - Anfänger-Themen 2
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
M Button in einem JDialog mit Enter ausführen Java Basics - Anfänger-Themen 2
C FocusLost reagiert nicht bei JDialog Java Basics - Anfänger-Themen 5
E Von einem JDialog einen neuen JDialog aufrufen Java Basics - Anfänger-Themen 10
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
G JDialog Java Basics - Anfänger-Themen 15
M JDialog Java Basics - Anfänger-Themen 3
M JDialog basierend auf JDialog aufrufen Java Basics - Anfänger-Themen 4
B KeyListener beim JDialog Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
S JDialog Frage Java Basics - Anfänger-Themen 2
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
P JDialog funktioniert nicht? Java Basics - Anfänger-Themen 9
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
F JDialog per Button-Klick schliessen Java Basics - Anfänger-Themen 2
S JDialog einrichten Java Basics - Anfänger-Themen 4
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
J Default Button bei jDialog Java Basics - Anfänger-Themen 2
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
K JDialog aus einer anderen klasse einfügen Java Basics - Anfänger-Themen 2
S Auf JDialog aus anderer Datei zugreifen Java Basics - Anfänger-Themen 5
D Current Thread not owner Java Basics - Anfänger-Themen 8
C Owner (UNIX) Java Basics - Anfänger-Themen 2
G "Owner" eines Dialoges setzen Java Basics - Anfänger-Themen 7
fragenÜber(fragen); Turtle Grafik mit GUI (JFrame) Java Basics - Anfänger-Themen 3
E JFrame + Buffer-strategy Java Basics - Anfänger-Themen 8
I JFrame / Screen auf zweitem (definiertem) Monitor öffnen Java Basics - Anfänger-Themen 3
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
B HSQL mit JFrame steuern Java Basics - Anfänger-Themen 4
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
S Kontrollieren ob jframe disposed ist Java Basics - Anfänger-Themen 3
Elyt JFrame in den Hintergrund verschieben Java Basics - Anfänger-Themen 3
OSchriever JFrame-Anwendungsfenster verschieben Java Basics - Anfänger-Themen 17
M Bild in JFrame Java Basics - Anfänger-Themen 1
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S JFrame mit Hintergrundbild und Button Java Basics - Anfänger-Themen 4
S JFrame Java Basics - Anfänger-Themen 15
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
T Auslagern von Methoden bei einem JFrame Java Basics - Anfänger-Themen 6
N Erste Schritte JFrame Caesar-Verschlüsselung Java Basics - Anfänger-Themen 23
B Erste Schritte Objekte von JFrame der Fenstergröße anpassen Java Basics - Anfänger-Themen 3
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R JFrame nicht verschiebbar Java Basics - Anfänger-Themen 2
T Wenn JFrame Textfelder Hintergrund Grün dann... (if) Java Basics - Anfänger-Themen 3
K Java JFrame mit Hintergrundbild erstellen Java Basics - Anfänger-Themen 1
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
H Eclipse JFrame Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben