Dimension



  • Hallo !

    ich schaffe es echt nicht ... die Größe eines Objektes in Java festzulegen. Jammer aber ist leider so 😕 verstehe ich nicht...
    Also ich habe das mit Dimension versucht... da wird aber nur so eine Art Buffer um die Schaltfläche herum gemacht, also Button bleibt gleich groß. Kann mir jemand sagen, wie ich die Höhe und Breite vergrössern kann ? 🙄 🙄 🙄

    /** JButton **/
            jbLoad = new JButton("myButton");
            Border raisedBorder = BorderFactory.createRaisedBevelBorder();
            jbLoad.setBorder(raisedBorder);
            jbLoad.setPreferredSize(new Dimension(120,60));
            jbLoad.addActionListener(this);
            /** JButton **/
    

  • Mod

    Welchen Layoutmanager nutzt du?

    ...zeig da mal den entsprechenden Code.



  • Hi, PreferredSize sagt nur daß die Komponente gern diese Größe hätte..ob sich die Layout-Manager dran halten, ist was anderes... das GridLayout, was für JFrames voreingestellt ist, vergrößert zB. die Komponenten immer relativ zur Fenstergröße egal was in PreferredSize drin steht. Du mußt also schätze ich den Layout-Manager wechseln, bzw was man bei Buttons oft macht, einen JPanel erstellen, in den du dann den oder die Buttons reinlegst (JPanel hat voreingestellt FlowLayout, das hält sich an PreferredSize) und dann den Panel dem Fenser hinzufügen, anstatt den Buttons selber..

    JButton button= new JButton("Button");
    button.setPreferredSize(new Dimension(120,60));
    JPanel panel=new JPanel();
    panel.add(button);
    getContentPane().add(panel); //Panel mit Button drauf hinzufügen
    


  • --- 🙂

    [ Dieser Beitrag wurde am 09.05.2003 um 10:48 Uhr von crass editiert. ]



  • @crass: Dass das GridLayout für JFrames voreingestellt ist halte ich für ein Gerücht 🙂



  • oh nee hat ja BorderLayout..bin grad selber bissel durcheinander gekommen, aber Border vergrößert ja auch im Zentrum



  • Ja, dass das BorderLayout im Zentrum einfügt und auch vergrößert stimmt 🙂



  • @Kati: Versuch es mal mit setMinimumSize und setMaximumSize - damit müsste auch der LayoutManager umgehen können.



  • hallo

    danke euch... sorry, aber ich komme mit den ganzen LayoutManagern nicht ganz zurecht. Ich hatte zuerst BorderLayout und einzelne Boxen ... aber da ich ContentPane nur in 2 gleich große (!) Bereiche aufteilen möchte, habe ich dann die Boxen in ein GridLayout (mit 1 Zeile und 2 Spalten) reingetan. Dabei befindet sich JButton allein in einem Box-Objekt. Könnte es also sein, dass sich da Box weigert, die Größe des Komponentes anzupassen ?

    Ps: ich dachte, FlowLayout hat man per Voreinstellung

    thnx



  • Das JPanel hat als Standardlayout FlowLayout (wie crass schon gesagt hat). Die ContentPane einer JFrame allerdings hat als Standard ein BorderLayout.

    Ich würde für dein Problem folgendes Vorschlagen.
    - Erzeuge ein JPanel mit GridLayout (1 Zeile, 2 Spalten)
    - In die erste Spalte legst du deine Komponente rein
    - In die zweite Spalte legst du ein JPanel mit FlowLayout (alignment bottom) und dem Button ein
    - Lege das JPanel mit GridLayout in die ContentPane

    Sieht dann so aus:

    +-----------------------------------------+
    + +------------------+                    +
    + +                  +                    +
    + +                  +                    +
    + +                  +     +--------+     +
    + +                  +     + Button +     +
    + +------------------+     +--------+     +
    +-----------------------------------------+
    


  • hi cengiz,

    ich werds machen. ist es aber vom Stil gut, wenn man in einem ContentPane (was eigentlich auch ein JPane sein kann, JPanel vom Container abgeleitet glaube ich) viele weitere JPanels einbettet... Ich dachte Boxen und ähnliches Zeug ist dafür zuständig, ansonsten ist man an die LayoutManagern gebunden, was sie damit auch immer anstellen.



  • Das Schachteln von Panels is vom Stil her find ich nicht schlecht, man könnt sich vielleicht was schöneres vorstellen, aber es is ziemlich nützlich und funktioniert gut. Alternativ könntest du auch das ziemlich flexibel einstellbare GridBagLayout verwenden oder dir selber n LayoutManager bauen.

    [ Dieser Beitrag wurde am 09.05.2003 um 12:55 Uhr von crass editiert. ]



  • jo.. ich werde mir schon was überlegen


Anmelden zum Antworten