Beim Neuzeichnen einer Swing GUI kurz Schwarzer Hintergrund

LordTribual

Mitglied
Hallo an alle,

Wie kann ich es verhindern, dass meine GUI beim neu zeichnen kurz schwarz wird.

Ich versuche ein JFrame zu erstellen, in dem sich verschiedene Komponenten befinden. Wenn ein Button ausgelöst wurde durch ein Klick, soll die size durch setSize() auf eine andere größe gesetzt werden und anschließend mittels validate() neugezeichnet werden. Dadruch entsteht dieser komische Nebeneffekt, dass das Fenster kurz schwarz wird.

Kann man diesen Effekt unterdrücken ? Wenn ja würde ich mich über eine Antwort sehr freuen.

Mit freundlichen Grüßen,

LordTribual
 
du zeichnest, bzw. addest die Komponenten direkt auf ein JFrame?

Wenn du ein JPanel (den du dann dem JFrame addest) für diese Operationen nimmst, sollte der schwarze Hintergrund nicht mehr erscheinen.
 
Danke, ich habe es nicht wirklich hinbekommen. Selbst wenn ich die Komponenten einem JPanel hinzufüge, was ich sowieso immer mache, wird das Fenster kurz schwarz. Ich finde einfach keine Lösung.

In diesem kleinen Beispiel funktioniert es:

Java:
import java.awt.BorderLayout;
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 ResizeTest extends JFrame {

	private static final long serialVersionUID = -3953275515326388312L;
	
	private JPanel contentPane;

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

	
	public ResizeTest() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(200, 200);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(10, 10, 10, 8));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout());
		
		JButton button = new JButton("Test");
		button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				setSize(200, 300);
				validate();
			}
		});
		
		contentPane.add(button, BorderLayout.NORTH);
		
		setVisible(true);
	}
}

Jedoch habe ich in etwa den selben Aufbau im richtigen Projekt. Ich habe auch ein contentPane, dem ich dann alle Komponenten hinzufüge. Ich werde daraus nicht wirklich schlau.

Gruß,

LordTribual
 
Das hat auch leider nichts bewirkt. 🙁

Trotzdem danke. Ist das ein allgemeins Phänomen oder was ist da schief ?
Irgendwie hab ich das Gefühl das liegt an SWING generell.

Gruß 🙂
 

Neue Themen


Zurück
Oben