[java]swing gui stretchen?

Pagina: 1
Acties:

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
Hoe kan ik in swing ervoor zorgen dat bepaalde componenten stretchen over het scherm?

Afbeeldingslocatie: http://stormvogels.veendam.org/gui.gif

Hoe kan ik er nu voor zorgen dat deze tabbedpane netjes over het onderste gedeelte van de gui verschijnt.

Ik heb deze code voor het eerste frame :
code:
1
2
3
4
5
6
    setJMenuBar(new MenuBar());

    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(new BorderLayout());
    contentPane.add(new Toolbar(), BorderLayout.NORTH);
    contentPane.add(new TabbedPane(), BorderLayout.CENTER);

Ik ben een beetje aan het klooien hiermee.
Heeft iemand tips?

Patrick

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

a: waarom cast je naar een JPanel.
b: heb je al iets van inhoud staan op de tabbedpane?

c: iets meer code is wel makkelijk..

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
nou ik ben eigenlijk wat meer aan het expirimenteren met swing...heb daarom ook geen content voor de tabbedpane.... en dat casten van een jpanel heb ik ergens gelezen in een tutorial, 'k zou niet weten hoe dat anders zou moeten

ik wou gewoon wat algemene tips....want de ene tutorial zegt dit en de andere dat...en nu zou ik wel graag willen weten hoe je dat stretchen nu het beste kan oplossen

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
oke nog wat meer code misschien voor de verduidelijking hoe ik het nu heb :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Frame1 extends JFrame {

  JPanel contentPane;

  public Frame1() {
    try {
    jbInit();

    }
    catch(Exception e) {
    e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {

    setJMenuBar(new MenuBar());

    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(new BorderLayout());
    contentPane.add(new Toolbar(), BorderLayout.NORTH);
    contentPane.add(new ListPanel(), BorderLayout.CENTER);

  }
}

en de tabbedpane :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class TabbedPane extends JPanel {

    public TabbedPane() {
    ImageIcon icon = new ImageIcon("images/middle.gif");
    JTabbedPane tabbedPane = new JTabbedPane();

    Component panel1 = makeTextPanel("Blah");
    tabbedPane.addTab("One", icon, panel1, "Does nothing");
    tabbedPane.setSelectedIndex(0);

    Component panel2 = makeTextPanel("Blah blah");
    tabbedPane.addTab("Two", icon, panel2, "Does twice as much nothing");

    Component panel3 = makeTextPanel("Blah blah blah");
    tabbedPane.addTab("Three", icon, panel3, "Still does nothing");

    Component panel4 = makeTextPanel("Blah blah blah blah");
    tabbedPane.addTab("Four", icon, panel4, "Does nothing at all");

    add(tabbedPane);

    }

      protected Component makeTextPanel(String text) {
      JPanel panel = new JPanel(false);
      JLabel filler = new JLabel(text);
      filler.setHorizontalAlignment(JLabel.CENTER);
      panel.setLayout(new GridLayout(1, 1));
      panel.add(filler);
      return panel;
    }
}



en voor de toolbar en menubar heb ik elk een aparte class

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
ik heb al iets anders geprobeerd waardoor het wel gaat lukken zodat die tabbedpane zich verspreid over de rest van het programma.

ik heb het layout ingesteld op BorderLayout en dan de tabbedpane ingesteld op CENTER :
code:
1
2
3
4
5
6
7
8
9
setLayout(new BorderLayout());
    JTabbedPane tabbedPane = new JTabbedPane();

    Component panel1 = new MailPanel();
    tabbedPane.addTab("One", icon, panel1, "Does nothing");
    tabbedPane.setSelectedIndex(0);
    //code er tussenuit geknipt

    add(tabbedPane, BorderLayout.CENTER);

is dit een goeie oplossing?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 23:25

momania

iPhone 30! Bam!

Probeer eens in de JAVA docs uit te vogelen
wat je met een GridBagLayout kan doen,
als je dat dan een beetje onder de knie heb,
kan je bijna alles doen met je layout wat je wil...

(Gebruik zelf bijna niet anders :) )

Neem je whisky mee, is het te weinig... *zucht*


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op vrijdag 26 oktober 2001 18:36 schreef momania het volgende:
Probeer eens in de JAVA docs uit te vogelen
wat je met een GridBagLayout kan doen,
als je dat dan een beetje onder de knie heb,
kan je bijna alles doen met je layout wat je wil...

(Gebruik zelf bijna niet anders :) )
da's jammer want er zijn er mooie andere layout's ;)

zoals de BorderLayout() ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
-P@tRiCk-: is dit een goeie oplossing?
Sterker nog, het is de enige goed oplossing ;) . Zoals je in de docs kan lezen van de BorderLayout wordt voor de componenten in de westen, oosten, noorden en zuiden de preferredSize gebruikt. De ruimte die overblijft wordt alleen gebruikt om het centrum uit te rekken. Als er dus meer ruimte is in je GUI moet je altijd het component wat er extra ruimte bij moet krijgen in het centrum zetten. (Het zit iets gecompliceerder, maar op deze manier lukt het meestal wel :) ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op vrijdag 26 oktober 2001 15:54 schreef -P@tRiCk- het volgende:
Hoe kan ik in swing ervoor zorgen dat bepaalde componenten stretchen over het scherm?

[afbeelding]

Hoe kan ik er nu voor zorgen dat deze tabbedpane netjes over het onderste gedeelte van de gui verschijnt.

Ik heb deze code voor het eerste frame :
code:
1
2
3
4
5
6
    setJMenuBar(new MenuBar());

    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(new BorderLayout());
    contentPane.add(new Toolbar(), BorderLayout.NORTH);
    contentPane.add(new TabbedPane(), BorderLayout.CENTER);

Ik ben een beetje aan het klooien hiermee.
Heeft iemand tips?

Patrick
Aan de achtergrond van je plaatje te zien gebruik je Forte. Advies, klik daar wat meer in rond, bekijk de gegenereerde code en weet hoe je het ook handmatig kan doen.

Met Forte een GridBagLayoutje maken? Klik klik klik. Hier en daar wat tiepen, klaar. Erg makkelijk enne, forte heeft in mijn ogen de beste gegenereerde code van alle IDE's. Forte vind ik ook erg prettig werken. (Mits je 256+ MB geheugen hebt, hoe meer geheugen, hoe sneller Forte draait.)

Mooiste met Forte en gui's maken is nog wel als je wat in elkaar gezet hebt en dan naar de code kijkt. Gloep!! Vette 200 regels. (heb het nu over een GridBagLayout met diverse button-pannels en mooi aanpassing aan de scherm grootte).

Heb een keer zitten kijken of dingen niet omslachtig gedaan werden, nou, niet dus. Als ik het met de hand doe, dan ziet het er vergelijkbaar uit.

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
uh.....ik gebruik jbuilder 5 :)

maar heb de gui gewoon met de hand geschreven volgens de tutorial, niet via de designer dan vind ik het niet overzichtelijk meer.

maar goed ik ga het aan de hand van jullie tips gewoon ff verder worstelen met swing...is altijd leuk :)

bedankt allemaal
Pagina: 1