Manchmal werden die Inhalte des JFrames nicht angezeigt

Status
Nicht offen für weitere Antworten.

Ravebaby

Mitglied
Hallo zusammen,

ich habe einen MainView der von JFrame erbt.
Um ihn nach dem Befüllen anzuzeigen rufe ich
Code:
"this.setVisible(true);"
auf.
Nun habe ich das Problem, dass er manchmal die Inhalte sofort anzeigt und manchmal erst, wenn ich die Fenstergröße verändere.
Wie kann ich das verhindern?
Ich habe versucht mittels
Code:
"try{Thread.sleep(1000);}catch(Exception e){}"
abzuwarten bis alles initialisiert ist und dann erst "this.setVisible(true);" aufzurufen. Aber das hat leider auch keine Wirkung.

Vielen Dank schon einmal für jede Hilfe.
Grüße Rave
 

The_S

Top Contributor
Öhm, was initialisierst du denn so alles? Kannst du nicht feststellen, wann die letzte Komponente initialisiert ist!? Grundsätzlich sollte setVisible erst aufgerufen werden, wenn alles andere gesetzt ist!
 

Ravebaby

Mitglied
Ja, ich rufe es erst auf, wenn alle anderen Subviews und sonstiges gesetzt ist. Und wie gesagt, manchmal zeigt er es ja gleich von Anfang an richtig an und manchmal eben erst, wenn ich ein "resize" mache.
Es gibt das Problem wohl und es gibt anscheinend auch eine Lösung dafür. Allerdings konnte sich der Kollege nicht mehr an die Lösung erinnern.
Hier mal mein kompletter Code, falls das was nützt
Code:
package gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import javax.jmi.xmi.MalformedXMIException;
import javax.jmi.xmi.XmiReader;
import javax.jmi.xmi.XmiWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;

import model.GlobalModel;

import org.moflon.xmi.XMIReaderImpl;
import org.moflon.xmi.XMIWriterImpl;

import controller.GlobalController;

/**
 * The Main view. This handles the events fired by the Main view and creates all subviews 
 * @author ahaug31
 * @modified 2007-01-17 ahaug: setGlobalModel added to set a new model after loading a DXL file 
 * @modified 2007-01-17 ahaug: mew startup mechanism added 
 */

public class MainView extends JFrame implements ActionListener
{
	private static final long serialVersionUID = 1L;
	
	//create the tabs
	private	JTabbedPane tabbedPane;
	private	TypesView typesPanel;
	private	AttributesView attributesPanel;
	private	ViewsView viewsPanel;
	private	ModuleView modulePanel;
	
	private GlobalModel model;
	private GlobalController controller;

	// set the main panel properties
	public MainView(GlobalController globalController)
	{
		controller = globalController;
		controller.setMainView(this);
		// get the model created during application startup from the controller
		model = controller.getModel();
		
		setTitle("DOORS Module Manager");
		setSize(1000, 700);
		setBackground(Color.gray);
		
		JPanel topPanel = new JPanel();
		topPanel.setLayout(new BorderLayout());
		getContentPane().add(topPanel);
		
		addMenuBar();
		
		//create the tabs
		typesPanel = new gui.TypesView(model);
		attributesPanel = new gui.AttributesView(model);
		viewsPanel = new gui.ViewsView(model);
		modulePanel = new gui.ModuleView(model);
		
		// Create a tabbed pane
		tabbedPane = new JTabbedPane();
		tabbedPane.addTab("Modules", modulePanel);
		tabbedPane.addTab("AttributeTypes", typesPanel);
		tabbedPane.addTab("Attributes",attributesPanel);
		tabbedPane.addTab("Views", viewsPanel);
		topPanel.add(tabbedPane, BorderLayout.CENTER);
	}
	
	
	/**
   * if a new DXL file was opened there is a need to set the newly created GlobalModel 
   * @param globalModel the newly created GlobalModel
   */
	public void setNewGlobalModel(GlobalModel globalModel){
		model = globalModel;
		typesPanel.setGlobalModel(model);
		attributesPanel.setGlobalModel(model);
		viewsPanel.setGlobalModel(model);
		modulePanel.setGlobalModel(model);
	}
	
	
	private void addMenuBar(){
		// create and set the menu bar
		JMenuBar menuBar = new JMenuBar();
    menuBar.setOpaque(true);
    menuBar.setPreferredSize(new Dimension(200, 20));
		
    // add the file menu
		setJMenuBar(menuBar);
    JMenu fileMenu = new JMenu("File");
    fileMenu.setMnemonic(KeyEvent.VK_F);
    menuBar.add(fileMenu);
    
    // add the new menu item
    JMenuItem newMenuItem = new JMenuItem("New",KeyEvent.VK_N);
    newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    // add the action handling
    newMenuItem.addActionListener(this);
    newMenuItem.setActionCommand("New");
    fileMenu.add(newMenuItem);
    
    // add the load menu item
    JMenuItem loadMenuItem = new JMenuItem("Open",KeyEvent.VK_O);
    loadMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    // add the action handling
    loadMenuItem.addActionListener(this);
    loadMenuItem.setActionCommand("Open");
    fileMenu.add(loadMenuItem);
    
    // add the save menu item
    JMenuItem saveMenuItem = new JMenuItem("Save",KeyEvent.VK_S);
    saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
    // add the action handling
    saveMenuItem.addActionListener(this);
    saveMenuItem.setActionCommand("Save");
    fileMenu.add(saveMenuItem);
    fileMenu.addSeparator();
    
    // add the sync menu item
    JMenuItem syncMenuItem = new JMenuItem("Sync",KeyEvent.VK_Y);
    syncMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK));
    // add the action handling
    syncMenuItem.addActionListener(this);
    syncMenuItem.setActionCommand("Sync");
    fileMenu.add(syncMenuItem);
    fileMenu.addSeparator();
    
    // add the exit menu item
    JMenuItem exitMenuItem = new JMenuItem("Exit",KeyEvent.VK_X);
    exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
    //  add the action handling
    exitMenuItem.addActionListener(this);
    exitMenuItem.setActionCommand("Exit");
    fileMenu.add(exitMenuItem);
    
    // add the help menu
    setJMenuBar(menuBar);
    JMenu helpMenu = new JMenu("Help");
    helpMenu.setMnemonic(KeyEvent.VK_H);
    menuBar.add(helpMenu);
    
    // add the about menu item
    JMenuItem aboutMenuItem = new JMenuItem("About",KeyEvent.VK_A);
    aboutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
    helpMenu.add(aboutMenuItem);
    
    //set this view visible
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    try{Thread.sleep(1000);}catch(Exception e){} //wait shortly, enabling all objects being initialized (asynchronous events)
		this.setVisible(true);
	}
	
	
	private void openXMI(String filename){
		//Test-Code
		XmiReader xmiReader = new XMIReaderImpl();
		try {
			// if a new DXL file was opened there is a need to create a new model to display
			controller.createNewGlobalModel();
			ArrayList list = (ArrayList)xmiReader.read(filename, model);
			attributesPanel.initializeViewAfterFileLoading();
			typesPanel.initializeViewAfterFileLoading();
			//controller.setNewGlobalModel(model);
		} catch (MalformedXMIException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
	
	
	private void writeXMI(String filename){
		XmiWriter xmiWriter = new XMIWriterImpl();
		try {
			xmiWriter.write(new FileOutputStream(filename), model,
					"2.1");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void actionPerformed(ActionEvent e){
		String buttonPressed = e.getActionCommand();
		
		// Create a file chooser
    JFileChooser fc = new JFileChooser();
    
    if (buttonPressed == "New"){
			// set the folder to start in
			System.out.println("Create New Module");
		}
    
		if (buttonPressed == "Open"){
			// set the folder to start in
			File currFile = new File("C:\\AHaug\\XML Lager\\");
			fc.setCurrentDirectory(currFile);
			// open the "file open" dialog
			int returnVal = fc.showOpenDialog(MainView.this);
			if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();
        //This is where a real application would open the file.
        openXMI(file.getPath());
			} else {
        System.out.println("Open command cancelled by user." + "\n");
			}
		}
		
		if (buttonPressed == "Save"){
			//set the folder to start in
			File currFile = new File("C:\\AHaug\\XML Lager\\");
			fc.setCurrentDirectory(currFile);
			int returnVal = fc.showSaveDialog(MainView.this);
      if (returnVal == JFileChooser.APPROVE_OPTION) {
          File file = fc.getSelectedFile();
          writeXMI(file.getPath());	
      } else {
      	System.out.println("Save command cancelled by user." + "\n");
      }		
		}
		
		if (buttonPressed == "Sync"){
			
		}
		if (buttonPressed == "Exit"){
			// exit application
			this.dispose();
		}
	}
}
 

Ravebaby

Mitglied
Peinlich, peinlich, ich hab's... Ich hab ja wirklich noch Komponenten hinzugefügt nachdem ich setVisible()aufgerufen habe. Nun ist setVisible() die letzte Anweisung im Konstruktur geworden und alles klappt wunderbar.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Warum nutzt man manchmal setpaint und manchmal setcolor? AWT, Swing, JavaFX & SWT 2
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
T Scene-Wechsel manchmal weiss AWT, Swing, JavaFX & SWT 3
B Manchmal grauer Bildschirm; Manchmal nicht AWT, Swing, JavaFX & SWT 5
A Applet Gui ist manchmal grau AWT, Swing, JavaFX & SWT 5
S Swing Problem mit Swing - Fenster friert manchmal ein. AWT, Swing, JavaFX & SWT 7
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
T Swing repaint funktioniert nur manchmal? AWT, Swing, JavaFX & SWT 6
S Seltsames Problem - manchmal enthaelt die ActionMap eine JTextArea keine Actions. AWT, Swing, JavaFX & SWT 4
K GUI verfärbt sich manchmal AWT, Swing, JavaFX & SWT 32
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
W Können Animationen in JavaFX "verschluckt" werden? AWT, Swing, JavaFX & SWT 8
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
H JButtons werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
ProggersWorld JavaFX Icons im TreeView werden nicht angezeigt AWT, Swing, JavaFX & SWT 1
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
J e(fx)clipse funkioniert nicht / imports werden Rot gekennzeichnet AWT, Swing, JavaFX & SWT 1
ronbot77 JavaFX Rechtecke werden nicht neu gezeichnet AWT, Swing, JavaFX & SWT 8
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
MoxxiManagarm JavaFX Auch ich versuche mit JavaFX warm zu werden AWT, Swing, JavaFX & SWT 9
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
L Swing JPanels werden nicht angezeigt! AWT, Swing, JavaFX & SWT 7
ralfb1105 Swing SwingWorker - max 10 Threats werden gestartet !? AWT, Swing, JavaFX & SWT 5
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
A Swing Meine JButtons werden nicht angezeigt bitte helft mir AWT, Swing, JavaFX & SWT 2
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
SchmidiMC 2D-Grafik Grafiken werden nicht gezeichnet AWT, Swing, JavaFX & SWT 2
J Controler werden nicht inialisiert - Warum ? AWT, Swing, JavaFX & SWT 12
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
R JRE, NPAPI Java Plugins: Werden Plugins weiterhin bereit gestellt? AWT, Swing, JavaFX & SWT 5
I JAVA 8, JAVAFX und Eclipse – muss Eclipse extra eingerichtet werden? AWT, Swing, JavaFX & SWT 9
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
DerMauri JavaFX Raspberry Pi meldet "Hauptklasse konnte nicht gefunden oder geladen werden" AWT, Swing, JavaFX & SWT 10
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
J Swing Strings werden nicht in Textfeld geschrieben AWT, Swing, JavaFX & SWT 8
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
X JavaFX Tooltips für XYChart-Knoten werden nicht angezeigt! AWT, Swing, JavaFX & SWT 3
P JavaFX - XCF Datei von Gimp kann nicht angezeigt werden AWT, Swing, JavaFX & SWT 3
J Meine ProgBar und ProgIndi werden nicht aktualisiert AWT, Swing, JavaFX & SWT 28
A Swing Buttons werden trotz setVisible nicht dargestellt AWT, Swing, JavaFX & SWT 14
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
C AWT Textfelder werden nicht automatisch angezeigt AWT, Swing, JavaFX & SWT 2
D Buttons werden nebeneinander angeordnet AWT, Swing, JavaFX & SWT 9
C Textfeld und Label werden nicht angezeigt (Ubuntu) AWT, Swing, JavaFX & SWT 2
9 Swing Registrierte Knöpfe mit Bildern werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
L Tooltips werden nicht mehr angezeigt AWT, Swing, JavaFX & SWT 5
R Swing Buttons werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
K JTabs werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
S Swing Tooltips werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
D JavaFX Mysteriöser Dropshadow hinter Tablabelschrift - Schatten kann nicht entfernt werden (FXML + CSS) AWT, Swing, JavaFX & SWT 6
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
G JavaFX TableView - Änderungen werden nicht übernommen. AWT, Swing, JavaFX & SWT 3
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
A Swing Parameter werden bei Funktionsaufruf nicht ausgegeben AWT, Swing, JavaFX & SWT 2
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
J Abbrechen muss immer einmal mehr gedrückt werden AWT, Swing, JavaFX & SWT 3
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
S Swing Inhalte von Scroll-Panes werden nicht gezeichnet AWT, Swing, JavaFX & SWT 9
Z Swing JPanel soll größer werden als Parent Container (überlappen) AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
C Mausbewegungen werden gepuffert AWT, Swing, JavaFX & SWT 2
J CMD: Hauptklasse konnte nicht gefunden werden AWT, Swing, JavaFX & SWT 4
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
maestr0 SWT ContainerSelectionDialog kann nicht importiert werden AWT, Swing, JavaFX & SWT 2
X JTable Selektierte Reihe kann nicht gelöscht werden AWT, Swing, JavaFX & SWT 2
T iText - JTable to PDF - titel werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
El_Lobo Swing Swing TextArea und JTextField werden nicht aktualisiert AWT, Swing, JavaFX & SWT 2
R Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden. AWT, Swing, JavaFX & SWT 3
N Meine JLabels werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
alex_fairytail LayoutManager NullLayout überlappende Labels werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
aze Werden Applets browserunabhängig angezeigt ? AWT, Swing, JavaFX & SWT 3
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
M Swing CheckBoxen werden nicht in jTable angezeigt AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben