Announcement

Collapse
No announcement yet.

JFrame

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JFrame

    Hallo an alle,

    ich bin JAVA Neuling und in an dieses Board schreibe ich heute zum erten Mal.

    Also, zum besseren Verstehen.

    Code:
    Meine Entwicklungsumgebenung:
    Java 1.5.0.11
    Eclipse 3.2.1
    OS: Debian GNU/Linux
    Ich habe mein erstes GUI programmiert.
    Nun lese ich meinen Quelltext so:

    1. Ich habe eine Klasse die JFrame erweitert bzw. von JFrame erbt.
    2. Dieses JFrame layoute ich mittels FlowLayout.
    3. Nun erstelle ich ein JPanel mit GridBagLayout.
    4. Platziere in diesem JPanel meine GUI Elemente.
    5. Füge das JPanel dem JFrame zu.

    Hier meine Fragen: Könnt ich auch ohne JPanel, direkt auf JFrame arbeiten? Denn ein weiteres JPanel will ich dem JFrame nicht hinzufügen. Habe ich dann Vorteile bzw. Nachteile?

    So nun noche in paar Fragen zu JFrame, die mir diverse Bücher und google nicht beantworten können.

    1. Wie fixiere ich JFrame auf genau die Größe, die alles von der GUI ordentlich anzeigt?
    2. Warum muss ich erst meine GUI minimal vergrößern damit ich überhaupt etwas sehe. Beim Start der GUI wird nur der graue Hintergrund gerendert. Der Inhalt ist nicht zu erkennen. Aber das ist nicht immer so. Manches Mal erscheinen auch die GUI Elemente. ???:L

    Danke für Eure Antworten.

  • #2
    In Swing platziert man die GUI-Komponenten (in der Regel) nicht direkt auf dem JFrame, sondern auf einer Pane, welches den gesamten "Innenraum" des JFrame einnimmt. Über getContentPane() kommt man an genau diese Pane heran.
    Also z.B.: this.getContentPane().add( new JLabel("Hallo") );


    Warum sind die Komponenten anfangs nicht (richtig) zu sehen? - Das Fenster ist wahrscheinlich in seiner initialen Größe (siehe unten) zu klein. Dadurch können die Komponenten nicht sinnvoll gezeichnet werden. Mit jeder Größenänderung berechnet das Fenster sein Layout neu. Genau genommen macht das der jeweilige Layout-Manager. Ändert man die Größe so, daß er alle Komponenten zeichnen kann, erscheinen sie plötzlich. Auf der anderen Seite verschwinden Komponenten oder sehen völlig daneben aus, wenn man das Fenster zu sehr verkleinert.


    Mit Aufruf der Methode pack() nimmt das Fenster automatisch die kleinste Größe ein, in der alle GUI-Komponenten sauber zu sehen sind - also eine Berechnung der "optimalen" Größe.
    Diese Methode sollte man selbstverständlich erst aufrufen, nachdem man alle Komponenten platziert hat, denn sonst ist die Größenberechnung falsch.

    Alternativ kann man mit setSize(breite, hoehe) die Größe selbst angeben; da ist Ausprobieren gefragt.

    Mit setResizeable(false) kannst Du - falls Du das möchtest - die Größenänderung durch den Anwender verhindern.

    Der folgende Ablauf dürfte häufig anzutreffen sein:
    1. GUI-Komponenten platzieren
    2. pack()
    3. setResizeable(false)
    4. setVisible(true);


    In der Hoffnung geholfen zu haben,
    Stefan

    Comment

    Working...
    X