Mein Frame startet immer minimiert

Gehirnfasching

Grünschnabel
Es will mir nicht gelingen die Groesse eines Fensters bei dessen Erzeugung vorzugeben.
Soll heissen bei mir startet das Fenster immer minimiert.
setSize zeigt keine Wirkung.
Die Frage ist vielleicht etwas simpel allerdings konnte ich weder auf dieser Seite, noch grundsaetzlich im Netz ne ordendliche Antwort finden.

thx im Vorraus
 
public class Screen extends JFrame{

public Screen() {
this.setSize(new Dimension(300,300));
this.setVisible(true);
}
}
 
Zuletzt bearbeitet:
Der Effekt tritt bei mir nicht auf. Welche Umgebung und welches OS verwendest Du?
und versuche mal dies wenn Du windows hast..
Java:
import java.awt.Dimension;

import javax.swing.JFrame;

public class Screen extends JFrame {

	public Screen() {

		


		this.setSize(new Dimension(300, 300));
		this.setVisible(true);
		
		boolean enableWindowsPatch = false;
		if (System.getProperty("os.name").startsWith("Windows")) {

			enableWindowsPatch = true;
		}
		if(enableWindowsPatch){
			this.toFront();
		}
	}

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

oder das:

Java:
import java.awt.Dimension;
import java.awt.Frame;

import javax.swing.JFrame;

public class Screen extends JFrame {

	public Screen() {

		


		this.setSize(new Dimension(300, 300));
		
		
		if(getState()==Frame.ICONIFIED)
			setState(Frame.NORMAL);
			
		setVisible(true);
		requestFocus();
			

	}

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

wobei mich mehr interessiert, warum das passiert!

gruß
 
Sehr guter Ratschlag.
Als ich das einfachstmoegliche Beispiel gebaut habe hats geklappt.
Das hab ich dann immer weiter aufgeblasen und dann wars klar:

Ich hatte ne Klasse fuer ein Fenster geschrieben.
Die sollte als SuperKlasse fuer meine ganzen kleinen Fenster dienen.
Dort hatte ich den Konstruktor vollgepumpt mit this.setSize, ...
Und dann hab ich mich gewundert warum sich die Kinder nicht an den SuperConstructor halten. (also minimiert starten)
Dann hab ich die SuperKlasse mal abstract gemacht und es hat geklappt.

Und jetzt weiss ich nicht wieso
 
Zunaechst erstmal um Missverstaendnisse zu vermeiden:
Mir war nicht klar, dass ich aus Versehen oben mein Minimalbeispiel gepostet habe.
Denn dieses funktioniert wunderbar.
 
Dieser Code ist unvollstaendig:

Von dieser Klasse wird direkt in der main ein Objekt erzeugt:
(Sie verwaltet die verschiedenen Fenster)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

public class EventManager implements ActionListener {

Overview myOverview;
KalendarShowAll myKalendarShowAll = null;

public EventManager() {
myOverview = new Overview(this);
}

@Override
public void actionPerformed(ActionEvent e) {
boolean identified = false;
// neues Fenster oeffnen
if (e.getActionCommand().equals("neues Kalender-Fenster")) {
identified = true;
myOverview.setVisible(false);
if(myKalendarShowAll!=null) {
myKalendarShowAll.setSize(myOverview.getSize());
myKalendarShowAll.setLocation(myOverview.getLocation());
myKalendarShowAll.setVisible(true);
} else {
myKalendarShowAll = new KalendarShowAll();
myKalendarShowAll.setSize(myOverview.getSize());
myKalendarShowAll.setLocation(myOverview.getLocation());
myKalendarShowAll.setVisible(true);
}
}
if (!identified) {
System.out.println("unknown ActionCommand");
System.out.println(e.toString());
}
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Das ist die SuperKlasse:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

abstract public class ShowAllScreen extends JFrame {

public EventContainer events = new EventContainer();
JPanel myContentPane = new JPanel();

public ShowAllScreen() {
myContentPane.setBackground(Color.BLACK);
this.setContentPane(myContentPane);
}

public EventContainer getEvents() {
return events;
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Das ist ein Kind:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class KalendarShowAll extends ShowAllScreen {

public KalendarShowAll() {

}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
Zuletzt bearbeitet:
Mir ist auf die Schnelle nicht klargeworden wie ich diese Fragmente als JavaCode haette einbinden koennen.

Meine Probleme haben sich mittlerweile verlagert, mein urspruengliches Problem ist geloest.

aktuelles Problem:
Die Klasse ShowAllScreen ist ja abstract und liegt in einem anderen Package als die Klasse EventManager.
Mir gelingt es nicht von EventManager aus die Methode getEvents zu sehen.
Wie komme ich von EventManager aus an das Objekt auf das die Variable events der Klasse ShowAllScreen zeigt?
 
Zuletzt bearbeitet:
Hallo,

erstmal zu deinem ersten Problem. Ich glaube nicht, dass deine Fenster minimiert gestartet sind, ohne dass es irgendwo eingestellt wurde. Ich glaube eher, dass nur die Titelleiste zu sehen war. Minimierst ist nämlich, wenn das Fenster nur in der Taskleiste ist und sonst nicht sichtbar und das muss man explizit einstellen.
Desweiteren kann es nicht daran liegen, dass es funktioniert, weil du die Klasse abstract gemacht hast.

Zu deinem zweiten Problem.
Mit dem Object myKalendarShowAll müsstest du eigentlich die Methode getEvents() aufrufen können.
Code:
myKalendarShowAll.getEvents();

MFG

Sascha
 
Zurück