Komponentengröße anpassen?????



  • Hallo zusammen,

    ich habe ein kleines Probelm. Vorab, ich arbeite mit eclipse und würde gerne wissen, wie ich meine Komponenten, wie z.B. einen JButton, JTextField, JTextArea usw. anpassen kann, damit diese, wenn ich z.B. das Fenster vergrößere diese nicht mit vergrößert werden. Mal angenommen ich setzte einen FlowLayout und einen GridLayout in mein Fenster ein, dieses habe ich aber vorher mit size(300,300) definiert und wenn ich dann das Fenster maximiere, dann sollen diese Komponenten die gleiche Größe haben wie im vordefinierten Fenster (size(300,300)).

    Ist das machbar??? (Alles unter swing)

    Ich habe folgende Methoden gefunden, aber wirklich was anfangen kann ich damit nicht.

    z.B. setMaximumSize(dimension) oder setPreferredSize()...

    (Was meinen die eigentlich mit dimension)

    So viele Fragen auf einmal, aber ich hoffe ihr könnt mir helfen...

    Sag schon mal Danke...

    mfg monet



  • Hi,

    Dimension ist ne Klasse...schau sie dir doch mal an... die ist selbsterklärend.
    Wenn es mit dieser Methode nicht geht (was ich auch glaube, dass es nciht geht, aber eben nciht weiß), müsstest du dir entweder nen eigenes Layout basteln oder du nimmst das null-Layout, was aber unpraktisch ist. Warum willst du denn, dass sich die Komponenten nicht mitvergrößern? Ist doch ne praktische Sache...



  • Also mit dem GridBagLayout-Manager kannst du das hinkriegen. Das ist aber nicht so einfach zu erklären,da der schon ein bisschen komplexer als z.B. FlowLayout ist.
    (Also letztendlich musst du den fill Parameter von der GridBagConstraints-Klasse auf NONE setzen und ausserdem solltest du da glaub auch noch weightx und weighty auf 0.0 setzen; naja sagt dir jetzt wohl nix, aber wie gesagt schau dir diesen Manager einfach mal an). Es lohnt sich im übrigen sowieso, dass du dich darin einarbeitest, weil du damit eigentlich am flexibelsten bist und du früher oder später sowieso nicht dran vorbei kommst, wenn du GUIs designen musst.



  • Hi Leute,
    danke für eure Antworten.

    Zunächst würde ich gerne die Frage von LeGaN beantworten. Alos, wenn ich mit dem GridLayout einen Button erstelle, wird dieser riesig. Ich weiss ncht ob du das schon mal ausprobiert hast... :p

    Du hast vermutlich recht nep, ich werde wohl damit jetzt anfangen. Ich habe mir schon etwas über GridBagLayout durchgelesen und ich kann schon mit weighty und weihgtx ein wenig anfangen. Habe auch schon gelesen, dass GridBag sehr flexibel ist.

    Ich habe noch eine Frage. Gibt es eine Methode mit der man die voreingestellte Fenstergröße festlegen kann, damit von dem Benutzer diese nicht verändert werden kann, oder vielleicht das x in der Titelleiste verschwinden zu lassen????

    mfg monet



  • Ja du setzt einfach mit setSize die Größe deines JFrames. Danach rufst du die Methode setResizable(false) von dem JFrame auf. Das bewirkt, dass das JFrame in seiner Größe nicht mehr verändert werden kann



  • Danke nep,

    ich werde es ausprobiern. Nur aus reiner Neugier: Ist die setResizalbe()-Methode eine Klassen-Methode des JFrame oder des JComponet?????

    mfg monet



  • Oje, ich weiß auch nicht auswendig wo diese MEthode in der Vererbungshierachie zuerst auftaucht. Aber ich denke schon auf jeden Fall vor JFrame, also wahrscheinlich schon JComponent.

    Übrigens, genau solche Sachen kannst du bequem in der Javadoc nachlesen (auf der Sun-Homepage). Damit hättest du dir bis jetzt die meisten Fragen selbst beantworten können...



  • Hi nep,

    ich habe es mit der, vor dir vorgeschlagenen Methode versucht und es hat geklappt, nur jetzt ist ein kleines Prob. aufgetreten. Bei mir erscheint kein Inhalt mehr im Fenster, wenn ich es mir als Vorschau anschauen möchte. Wenn ich das Fenster etwas vergrößerer, dann ist der Inhalt komplett. Aber mit der setResizable()-Methode kann ich das Fenster ja nicht vergrößern und somit erscheint auch kein Inhalt mehr.

    Was kann ich denn da machen???

    Ach ja, ich wollte noch gerne wissen, ob es noch eine Methode gibt, die das Fenster automatisch aus Maximalgröße setzt.

    mfg monet


Log in to reply