Swing fullscreen switch geht nicht richtig

darkeye2

Bekanntes Mitglied
Hallo,

ich habe ein JFrame in dem ein GLCanvas angezeigt wird. Nun möchte ich bei einem tastendruck zwischen fullscreen und window mode switchen können, leider klappt das nicht ganz, meine methode sieht so aus:

Java:
private void switchToFullscreen(boolean b){
		if(b){
			this.setVisible(false);
			this.remove(canvas);
			this.dispose();
			this.setUndecorated(true);
	                this.setResizable(false);
	                device.setFullScreenWindow(this);
	                this.add(canvas, BorderLayout.CENTER);
	                this.setVisible(true);
		}else{
			setVisible(false);
			this.remove(canvas);
			dispose();
			setUndecorated(false);
			device.setFullScreenWindow(null);
			setSize(WIDTH,HEIGHT);
			this.add(canvas, BorderLayout.CENTER);
			//setLocationRelativeTo(null);
			this.setVisible(true);
			this.setSize(WIDTH,HEIGHT);
			this.setPreferredSize(new Dimension(WIDTH,HEIGHT));
		}
	}

wenn ich das canvas nicht entferne und wieder hinzufüge geht das gar nicht!
so wie es ist wird die größe nicht geändert (fullscreen geht, aber bei window ist nur der rahmen da, aber es maximiert. Und ich kriege beim switchen jedes mal den fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Buffers have not been created
	at sun.awt.windows.WComponentPeer.getBackBuffer(WComponentPeer.java:877)
	at java.awt.Component$FlipBufferStrategy.getBackBuffer(Component.java:3815)
	at java.awt.Component$FlipBufferStrategy.updateInternalBuffers(Component.java:3800)
	at java.awt.Component$FlipBufferStrategy.revalidate(Component.java:3915)
	at java.awt.Component$FlipBufferStrategy.revalidate(Component.java:3897)
	at java.awt.Component$FlipBufferStrategy.getDrawGraphics(Component.java:3889)
	at javax.swing.BufferStrategyPaintManager.prepare(BufferStrategyPaintManager.java:508)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:264)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
	at javax.swing.JComponent.paint(JComponent.java:1015)
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
	at java.awt.Container.paint(Container.java:1780)
	at java.awt.Window.paint(Window.java:3375)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
	at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 

darkeye2

Bekanntes Mitglied
der link hilft mir leider nicht weiter, mir ist durchaus bewusst, was mir der fehler sagen will.

Meine frage war eher, ob jemand weiß, wie man das mit dem fullscreen toggeling richtig macht, damit unter der fehler nicht auftritt, und das auch ansonsten so funktioniert, wie es soll.

MfG
 

darkeye2

Bekanntes Mitglied
das beispiel funktioniert so leider nicht:
- um fullscreen zu haben muss man erst setUndecorated auf true setzen
- um normales fenster anzeigen zu können, muss man setUndecorated wieder auf false setzen
dies geht leider nur, wenn das frame disposed wird, sonst kriegt man einen fehler.

Weiß den keiner eine lösung?
 

oversoul

Aktives Mitglied
hmm wo ist den das Problem einfach 2 Fenster zu erstellen ?

Normalerweise sollten ja die Daten sowieso von der View getrennt sein.
Sprich erstell einfach eine "FullScreenView" und eine "WindowView".

Ich hoffe dieser Gedanke hilft ^^
 

bERt0r

Top Contributor
Hast recht, du brauchst das dispose. Ich hab dir ein Beispiel gemacht:
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;


public class FullScreenTest extends JFrame
{
	
	private JPanel contentPane;
	private JButton btnSwitch;
	private GraphicsDevice device;
	private boolean isFullscreen=false;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						FullScreenTest frame = new FullScreenTest();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public FullScreenTest()
	{
		GraphicsEnvironment env=GraphicsEnvironment.getLocalGraphicsEnvironment();
		device=env.getDefaultScreenDevice();
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setPreferredSize(new Dimension(450, 300));
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		btnSwitch = new JButton("Switch");
		btnSwitch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				dispose();
				
				if(!isFullscreen)
				{
					setUndecorated(true);
					setResizable(false);
					device.setFullScreenWindow(FullScreenTest.this);
				}
				else
				{	
					device.setFullScreenWindow(null);
					setUndecorated(false);
					setResizable(true);
					pack();
					setVisible(true);
				}
				isFullscreen=!isFullscreen;
			}
		});
		contentPane.add(btnSwitch, BorderLayout.SOUTH);
		pack();
	}	
}
 

darkeye2

Bekanntes Mitglied
Danke,
hab zwar immer noch nicht herausgefunden, was mein fehler genau war, aber denke, das liegt am invokelater. Auf jeden fall funktioniert deine lösung sehr gut!

MfG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
F Fullscreen rückgänig machen !!! AWT, Swing, JavaFX & SWT 4
K Fullscreen Java3D AWT, Swing, JavaFX & SWT 5
H Swing Fullscreen GUI AWT, Swing, JavaFX & SWT 2
C Java-applikation über Fullscreen AWT, Swing, JavaFX & SWT 4
eLogic Fullscreen anwendung aus der man nicht rauskommt AWT, Swing, JavaFX & SWT 37
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
G FullScreen JFrames wechseln AWT, Swing, JavaFX & SWT 2
E Swing Fullscreen und Dialogfelder AWT, Swing, JavaFX & SWT 3
S Fullscreen auf Sekundärmonitor AWT, Swing, JavaFX & SWT 10
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
D Container vor Fullscreen AWT, Swing, JavaFX & SWT 5
D LAF auf JFrame beschränken oder Substance LAF im Fullscreen AWT, Swing, JavaFX & SWT 6
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
H Fullscreen AWT, Swing, JavaFX & SWT 5
Der_Michel JFrames und Fullscreen AWT, Swing, JavaFX & SWT 2
K FullScreen Modus AWT, Swing, JavaFX & SWT 2
F FullScreen-Modus mit Dialogen AWT, Swing, JavaFX & SWT 2
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
S PatentComponent geht nicht? AWT, Swing, JavaFX & SWT 3
H automatische Anzahl der Spalten ermitteln -> geht nicht AWT, Swing, JavaFX & SWT 6
B JavaFX Wo liegt mein Gedankenfehler ??? KeyEvent geht nicht ... AWT, Swing, JavaFX & SWT 8
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
LexeB4F setValueAT geht nicht... wieso? AWT, Swing, JavaFX & SWT 14
T JLabel in die Mitte(JLabel.CENTER geht nicht) AWT, Swing, JavaFX & SWT 12
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
B Swing Form undecorated: Beim Bewegen geht die Maus immer automatisch zur linken Seite. AWT, Swing, JavaFX & SWT 7
I JavaFX - MP3 geht nicht AWT, Swing, JavaFX & SWT 4
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
F Icongröße ändern, geht das ? AWT, Swing, JavaFX & SWT 2
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
0 JTable Spaltenbreite automatisch an Inhalt anpassne geht nicht AWT, Swing, JavaFX & SWT 3
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
B Java und ansprechende Benutzeroberflächen - geht das? AWT, Swing, JavaFX & SWT 16
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
C Java2D Transparenz geht bei einfärben verloren AWT, Swing, JavaFX & SWT 7
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Y LookAndFeel Nimbus einschalten geht nicht AWT, Swing, JavaFX & SWT 31
M Bild aus .jar Archiv laden geht nicht AWT, Swing, JavaFX & SWT 6
L Stopp Button geht nicht AWT, Swing, JavaFX & SWT 2
S JDesktopPane bei Button-Klick anzeigen geht nicht AWT, Swing, JavaFX & SWT 5
D JList Scrollbar machen geht nicht AWT, Swing, JavaFX & SWT 4
J Label mit transparentem hintergrund - geht das? AWT, Swing, JavaFX & SWT 21
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
B Panels stapeln, geht das? AWT, Swing, JavaFX & SWT 7
P SetBounds auf JPanel geht nicht! AWT, Swing, JavaFX & SWT 2
S SWT Composite mit Layout Manager geht nicht AWT, Swing, JavaFX & SWT 4
S JPanel geht über Rand hinaus AWT, Swing, JavaFX & SWT 7
E setAlwaysOnTop geht verloren AWT, Swing, JavaFX & SWT 3
B Swing Variable in JTextfield geht nicht AWT, Swing, JavaFX & SWT 10
B Swing setDefaultButton geht nicht - Komponente fängt Events ab AWT, Swing, JavaFX & SWT 5
M FileFilter geht nicht AWT, Swing, JavaFX & SWT 5
A repaint() geht nicht ? AWT, Swing, JavaFX & SWT 5
D Jlist auf 10 Zeilen begrenzen geht bei mir nicht AWT, Swing, JavaFX & SWT 2
D Runtime.getRuntime.exec() + SWT oder Swing = geht nicht AWT, Swing, JavaFX & SWT 2
M Action.DISPLAYED_MNEMONIC_INDEX_KEY geht nicht mehr AWT, Swing, JavaFX & SWT 2
F JScrollPane setLayout geht nicht AWT, Swing, JavaFX & SWT 2
R MVC: System.out.prinln in View umleiten geht nicht richtig AWT, Swing, JavaFX & SWT 7
B MouseListener / doppelklick geht net AWT, Swing, JavaFX & SWT 16
G JToggleButton pressed geht nicht AWT, Swing, JavaFX & SWT 2
G setLocationRelativeTo(frame) geht plötzlich nicht mehr AWT, Swing, JavaFX & SWT 3
G fireTableDataChanged() geht das auch ohne vector? AWT, Swing, JavaFX & SWT 13
Z Buttons erscheinen erst wenn man mit der Maus drüber geht AWT, Swing, JavaFX & SWT 7
P GridBagLayout einfaches Beispiel geht nicht? AWT, Swing, JavaFX & SWT 5
I Tastur eingabe geht nicht (wenn Button vorhanden) AWT, Swing, JavaFX & SWT 5
W Swing, 2 JProgressbars und threads geht das? AWT, Swing, JavaFX & SWT 2
X JTable "geht" erst beim 2.Klick AWT, Swing, JavaFX & SWT 2
I JRadioButton disablen geht nicht AWT, Swing, JavaFX & SWT 4
M Wieso geht das nicht! AWT, Swing, JavaFX & SWT 3
G JDialog hinter Glasspane von JFrame. Geht das? AWT, Swing, JavaFX & SWT 3
P [SWT] - ProgressBar, Prozentzahlen live anzeigen geht nicht AWT, Swing, JavaFX & SWT 13
W netbeans projekt in Eclipse importieren -gui teil geht nicht AWT, Swing, JavaFX & SWT 5
V JTable - farbige Boolean-Felder - geht das? AWT, Swing, JavaFX & SWT 3
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
T Look and Feel ändern geht nicht, obwohl es geht. AWT, Swing, JavaFX & SWT 2
F Serialisiertes Object geht nicht zu Inizialisieren AWT, Swing, JavaFX & SWT 7
K setSize und setLocation geht nicht AWT, Swing, JavaFX & SWT 8
S JFileChooser Pfadübergabe mit Leerzeichen geht nicht AWT, Swing, JavaFX & SWT 6
G Warum geht das nicht? AWT, Swing, JavaFX & SWT 3
S JScrollPane in einem JDialog = geht nicht? AWT, Swing, JavaFX & SWT 14
B Layoutvorgabe: Geht so was überhaupt? AWT, Swing, JavaFX & SWT 5
S Animation geht nicht AWT, Swing, JavaFX & SWT 3
S JLabel zeilenumbruch ? geht das in JDialog? AWT, Swing, JavaFX & SWT 2
T Paint-Methode geht nicht AWT, Swing, JavaFX & SWT 5
R Wie geht dieser Effekt? AWT, Swing, JavaFX & SWT 15
I SWT - Browser.setUrl(url) geht nicht :-( AWT, Swing, JavaFX & SWT 6
M Antialiasing geht . bis zum repaint ! AWT, Swing, JavaFX & SWT 4
J Jar Datei geht nicht richtig AWT, Swing, JavaFX & SWT 7
S JTextArea background Transparent geht nicht AWT, Swing, JavaFX & SWT 23

Ähnliche Java Themen

Neue Themen


Oben