Toon posts:

[JAVA]SpringLayout toont niets - BorderLayout wel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het probleem:

Niet werkende code met SpringLayout:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.*;

public class Tabblad extends JPanel
{
   private JPanel pnlWerknemers = new JPanel();

    Controller controller = new Controller();

   public Tabblad(String tabbladNaam)
   {
        super (new SpringLayout());

        if (tabbladNaam.equals("werknemers"))
        {
            createTbWerknemers();
        }
   }
   
   public void createTbWerknemers()
   {
        Vector theRowVector;
        JButton btnWnToevoegen = new JButton("hijg");
        Vector vecAlleWerknemers = new Vector();

        Container contentPane = pnlWerknemers;
        SpringLayout layout = new SpringLayout();
        pnlWerknemers.setLayout(layout);
        contentPane.add(btnWnToevoegen);
        layout.putConstraint(SpringLayout.WEST, btnWnToevoegen, 5, SpringLayout.WEST, contentPane);
        layout.putConstraint(SpringLayout.NORTH, btnWnToevoegen, 5, SpringLayout.NORTH, contentPane);

        vecAlleWerknemers = controller.getAlleWerknemers();



   }
   
   public void createWerknemerToevoegen()
   {
   }
}


Dit wordt aangeroepen vanuit een andere klasse en toont (als het zou werken) wat op het tabbladpanel van de klasse die deze klasse aanroept. Nu wil ik hier gebruik maken van een SpringLayout (zie bovenstaande code). Het probleem is dan dat er niets wordt getoond op het scherm.
Wanneer ik de layout verander naar een BorderLayout (zie onderstaande code) dan wordt er wel wat weergegeven op het tabblad. Wat doe ik fout? Ik ben hier al een tijd mee bezig, heb alle tutorials al doorgenomen over layouts maar ik kom er nog niet uit.

Werkende Code met BorderLayout:

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
33
34
35
36
37
38
39
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.*;

public class Tabblad extends JPanel
{
   private JPanel pnlWerknemers = new JPanel(new BorderLayout());

    Controller controller = new Controller();

   public Tabblad(String tabbladNaam)
   {
        super (new BorderLayout());

        if (tabbladNaam.equals("werknemers"))
        {
            createTbWerknemers();
        }
   }

   public void createTbWerknemers()
   {
        Vector theRowVector;
        JButton btnWnToevoegen = new JButton("hijg");
        Vector vecAlleWerknemers = new Vector();
        btnWnToevoegen.setPreferredSize(new Dimension(200, 100));
        pnlWerknemers.add(btnWnToevoegen, BorderLayout.CENTER);
        vecAlleWerknemers = controller.getAlleWerknemers();
        add(pnlWerknemers);


   }

   public void createWerknemerToevoegen()
   {
   }
}

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Als je de How To aandachtig leest zie je dat SpringLayout eigenlijk verrekte weinig uit zichzelf doet. Wat hij dus ook niet doet is je content pane de juiste groote geven.

Dat kun je oplossen door de borders van je contentPane aan de buitenkant van je knop te binden met een constrant of door gewoon handmatig de grote in te stellen.

[ Voor 3% gewijzigd door CyberSnooP op 11-12-2003 18:56 ]

|_____vakje______|


Verwijderd

Topicstarter
Mmm.. snap ik niet helemaal. Moet ik even uitzoeken wat je precies bedoelt. Ik vind het alleen wel vaag dat deze SpringLayout wel weer werkt als ik hem direct op een frame plaats. Dus alles in dezelfde klasse houdt en niet aanroep vanuit een andere klasse.

Verwijderd

Topicstarter
Het probleem is nog steeds niet opgelost. Ook wanneer ik er probeer de layout op 'null' te zetten, werkt het niet (dmv setBounds). Er wordt dan niks getoond op het scherm.

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
33
34
35
36
37
38
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.*;

public class Tabblad extends JPanel
{
   private JPanel pnlWerknemers = new JPanel(null);

    Controller controller = new Controller();

   public Tabblad(String tabbladNaam)
   {
        super (null);

        if (tabbladNaam.equals("werknemers"))
        {
            createTbWerknemers();
        }
   }

   public void createTbWerknemers()
   {
        JButton test = new JButton("testen");
        pnlWerknemers.setLayout(null);
        Vector theRowVector;
        Vector vecAlleWerknemers = new Vector();
        vecAlleWerknemers = controller.getAlleWerknemers();
        test.setBounds(10, 10, 10, 10);
        pnlWerknemers.add(test);
        add(pnlWerknemers);
   }

   public void createWerknemerToevoegen()
   {
   }
}


Is er nog iemand die me kan helpen? Waarom werkt dit niet?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Waarom probeer je geen JTabbedPane?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
En waarom voeg je een JPanel toe aan je JPanel? Je Tabblad is zelf al een JPanel. Het is nogal zinloos om aan een leeg JPanel alleen een ander JPanel toe te voegen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Alarmnummer schreef op 15 december 2003 @ 14:26:
Waarom probeer je geen JTabbedPane?
Het is al een JTabbedPane. Dit wordt aangemaakt in een andere klasse. Hierop wordt dus het panel uit deze klasse geplaatst. Overigens is het me nog steeds niet gelukt.. :(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Jouw tabblad extends van een JPanel (waar jij niet expliciet een layout manager in hebt aangemaakt). Ik zou niet weten wat de default layout manager is, maar iets in me zegt dat je dat beter zelf beter kan aangeven.

Verder voeg jij aan deze Panel weer een panel toe (met die Spring layout). Dit is overbodig, omdat je alle componenten op deze panel net zo goed op dat tabblad kan toevoegen (omdat dat ook een Panel is).

Verder kan je beter met een LayoutManager werken, om mij part een XYLayoutManager (JBuilder heeft wel zo`n ding). Hierdoor kan je scherm tenminste nog opgeven welke size hij graag wil hebben. Verder is dat het size gebeuren van die panels een drama, dus sizes zetten zou ik ook niet willen aanraden.
Pagina: 1