Toon posts:

[JAVA] Panel aanroepen vanuit andere klasse

Pagina: 1
Acties:
  • 190 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig met een login-scherm. In dit login-scherm wil ik een panel aanroepen vanuit een andere klasse(GUI_Werknemer.class). Het probleem is dat het panel niet getoond wordt vanuit CardLayoutDemo.class. Het aanroepen gaat dus wel goed, maar er wordt niks van weergegeven.

Het enige dat ik dus wil weten is hoe je gebruik maakt van een panel uit een andere klasse. Hoe je een complete instantie van een klasse op een panel zet.

Ik heb al gezocht op tweakers, google, java.sun.com en javaalmanac.com.


Mijn code:

CardLayoutDemo
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CardLayoutDemo implements ItemListener {
    JPanel cards; //a panel that uses CardLayout
    final static String BUTTONPANEL = "JPanel with JButtons";
    final static String TEXTPANEL = "JPanel with JTextField";

    public void addComponentToPane(Container pane) {
        //Put the JComboBox in a JPanel to get a nicer look.
        JPanel comboBoxPane = new JPanel(); //use FlowLayout
        String comboBoxItems[] = { BUTTONPANEL, TEXTPANEL };
        JComboBox cb = new JComboBox(comboBoxItems);
        cb.setEditable(false);
        cb.addItemListener(this);
        comboBoxPane.add(cb);

        //Create the "cards".
        JPanel card1 = new JPanel();
        card1.add(new JButton("Button 1"));
        card1.add(new JButton("Button 2"));
        card1.add(new JButton("Button 3"));

        JPanel card2 = new JPanel();
        card2.add(new GUI_Werknemer());

        //Create the panel that contains the "cards".
        cards = new JPanel(new CardLayout());
        cards.add(card1, BUTTONPANEL);
        cards.add(card2, TEXTPANEL);

        pane.add(comboBoxPane, BorderLayout.PAGE_START);
        pane.add(cards, BorderLayout.CENTER);
    }

    public void itemStateChanged(ItemEvent evt) {
        CardLayout cl = (CardLayout)(cards.getLayout());
        cl.show(cards, (String)evt.getItem());
    }

    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        //Create and set up the window.
        JFrame frame = new JFrame("CardLayoutDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create and set up the content pane.
        CardLayoutDemo demo = new CardLayoutDemo();
        demo.addComponentToPane(frame.getContentPane());

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}


GUI_Werknemer

code:
1
2
3
4
5
6
7
8
9
10
11
import javax.swing.*;

public class GUI_Werknemer extends JFrame
{
    public GUI_Werknemer()
    {
        JPanel pane = new JPanel();
        JButton btn = new JButton("test");
        pane.add(btn);
    }
}

Verwijderd

Verwijderd schreef op 25 november 2003 @ 11:47:

GUI_Werknemer

code:
1
2
3
4
5
6
7
8
9
10
11
import javax.swing.*;

public class GUI_Werknemer extends JFrame
{
    public GUI_Werknemer()
    {
        JPanel pane = new JPanel();
        JButton btn = new JButton("test");
        pane.add(btn);
    }
}
Wat ik niet helemaal snap is waarom je deze class JFrame laat extenden? JPanel lijkt me eerder op zijn plaats.

Misschien heb je iets aan dit voorbeeldje?
http://www.apl.jhu.edu/~h...wing-Tutorial-JPanel.html

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

Alarmnummer

-= Tja =-


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

Alarmnummer

-= Tja =-

Verwijderd schreef op 25 november 2003 @ 12:05:
[...]


Wat ik niet helemaal snap is waarom je deze class JFrame laat extenden? JPanel lijkt me eerder op zijn plaats.
Die panel wordt meteen gerecycled trouwens. Je moet die panel wel toevoegen aan die JFrame. Maar idd.. je kan beter een JPanel gebruiken ipv een JFrame, omdat je een JPanel eventueel ook nog op een ander component kan plaatsen, en een JFrame niet.

Ik extend zelf bijna nooit van JFrames.

Verwijderd

Topicstarter
Ik heb het idd aangepast en JPanel wordt nu geextend. Verder heb ik het ook werkend gekregen met het voorbeeld dat werd doorgegeven.

Mijn code;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.awt.*;
import javax.swing.*;

public class JPanels extends JFrame
{
    public static void main(String[] args)
    {
        new JPanels();
    }

  public JPanels()
  {
        Container content = getContentPane();
        JPanel controlArea = new JPanel();
        controlArea.add(new SixChoicePanel());
        content.add(controlArea, BorderLayout.EAST);
        pack();
        setVisible(true);
    }
}


code:
1
2
3
4
5
6
7
8
9
10
11
import java.awt.*;
import javax.swing.*;

public class SixChoicePanel extends JPanel
{
    public SixChoicePanel()
    {
        JButton btn = new JButton("testen");
        add(btn);
    }
}


Nu alleen nog even inbouwen.