Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 14:31 Der er 16 kommentarer og
1 løsning

Indsættelse af et JPanel (nullLayout) i en anden panel(BorderLay)

Jeg har et problem med at få sat et JPanel ind i et andet JPanel. Problemet opstår når jeg ønsker at gemme de to forskellige panels i forskellige filer!

MainDriveren:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import GUIMain;

class GUIMaindriver
{

public static void main (String [] args) throws Exception
    {
        GUIMain frame = new GUIMain("Sky-Light A/S");
        frame.setSize(800, 600);
        frame.setVisible(true);       
    }

}

                        mainPanelen:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import GUIValg;

public class GUIMain extends JFrame
{
            JPanel                mainPanel, valgPanel;
            JButton                JTButton;
                           
      public GUIMain (String title)
    {    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle(title);
        setLocation(100, 100);
       
        JTButton = new JButton("Jesper");            //test
       
       
        mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());
       
        GUIValg valgPanel = new GUIValg();
       
       
        mainPanel.add(JTButton, BorderLayout.CENTER);
        mainPanel.add(valgPanel, BorderLayout.CENTER);
        setContentPane(mainPanel);
       
        valgPanel.setVisible(true);   
    }
}



                og valgPanelen:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


class GUIValg extends JPanel
{
    private JPanel            valgPanel;
    private JButton            vareButton, leverandoerButton, ordreButton, emptyButton, opsaetningButton;
             
    public GUIValg()
    {   
        vareButton                = new JButton("Varer");
        leverandoerButton        = new JButton("Leverandør");
        ordreButton                = new JButton("Ordre");
        emptyButton                = new JButton("Empty");
        opsaetningButton        = new JButton("Opsætning");
       
        vareButton.setToolTipText ("Viser samtlige varer på reservedelslageret");
        leverandoerButton.setToolTipText ("Viser samtlige leverandører");
        ordreButton.setToolTipText ("Viser samtlige ordrer");
        emptyButton.setToolTipText ("");
        opsaetningButton.setToolTipText ("Programmets opsætning");
       
        valgPanel = new JPanel();
        valgPanel.setLayout(null);
        //valgPanel.setBorder(BorderFactory.createTitledBorder(""));
        valgPanel.setSize(100, 100);
       
        valgPanel.add(vareButton);
        valgPanel.add(leverandoerButton);
        valgPanel.add(ordreButton);
        valgPanel.add(emptyButton);
        valgPanel.add(opsaetningButton);
       
        Insets insets = valgPanel.getInsets();
       
        vareButton.setBounds                            (10 + insets.left, 10 + insets.top, 40, 40);
        leverandoerButton.setBounds                        (60 + insets.left, 10 + insets.top, 40, 40);
        ordreButton.setBounds                            (110 + insets.left, 10 + insets.top, 40, 40);
        emptyButton.setBounds                            (160 + insets.left, 10 + insets.top, 40, 40);
        opsaetningButton.setBounds                        (210 + insets.left, 10 + insets.top, 40, 40);
        }
}


Håber nogen kan give et råd!
På forhånd tak
Avatar billede di8leva Nybegynder
01. november 2002 - 14:33 #1
hvad er fejlen?
Avatar billede di8leva Nybegynder
01. november 2002 - 14:34 #2
men det kan ikke vara godt att gøra såhær

mainPanel.add(JTButton, BorderLayout.CENTER);
mainPanel.add(valgPanel, BorderLayout.CENTER);

du placerar båda komponenter i center, ikke godt
Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 14:36 #3
Nej det ved jeg, men hvis man fjerner JTButton(test) vil den ikke vise ValgPanel i framen(maindriveren)!

Jeg vil gerne have valgPanel vist, og det kan jeg ikke!
Avatar billede di8leva Nybegynder
01. november 2002 - 14:41 #4
hvis du skriver

valgPanel.setBackground(Color.red);

i GUIMain.java så ser du att det faktiskt virker, men det er fejl på valgPanel
Avatar billede di8leva Nybegynder
01. november 2002 - 14:43 #5
jag ser ikke att du add:ar några komponenter i GUIValg.java

du bara skaper dem...
Avatar billede di8leva Nybegynder
01. november 2002 - 14:44 #6
kan det vara fejlet?

du addar ikke valgPanel efter att du add:at alle komponenter till den panel i GUIValg.java?
Avatar billede di8leva Nybegynder
01. november 2002 - 14:47 #7
hvis jag skrev:

setLayout(new BorderLayout());
add(valgPanel, BorderLayout.CENTER);

i GUIValg.java fick jag se 5 knapper, og det er bedre æn inget =)
Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 14:48 #8
Jeg tror ikke jeg er helt med i hvad du mener!?!
I GUIValg opretter jeg et panel, og add'er de forskellige JButtons

Så burde panelet vel være i orden?
Avatar billede di8leva Nybegynder
01. november 2002 - 14:51 #9
GUIValg ER en panel, och i GUIValg skapar du en annan panel och placerar alle knapper och annat i den panel.
men du lægger inte den panel:en i GUIValg (som jag skrivit ovan)

hvis du add:ar den inre panel (valgPanel) till GUIValg så kommer du att se den =)
Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 14:57 #10
Hvis jeg gør som du siger, så får jeg en Nullpointereception når jeg kører maindriveren...
Avatar billede di8leva Nybegynder
01. november 2002 - 15:01 #11
huh....

æven hvis du lægger den længst ner i koden, efter:

      emptyButton.setBounds                            (160 + insets.left, 10 + insets.top, 40, 40);
        opsaetningButton.setBounds                        (210 + insets.left, 10 + insets.top, 40, 40);

det virker fullkomligt godt hos mig, men knapperna er før små med de bounds... =)
Avatar billede di8leva Nybegynder
01. november 2002 - 15:02 #12
hvis du får nullpointerexception får du ett extra fejlmeddelelse som siger hvor ditt null-verdi er...

hvad siger det?
Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 15:03 #13
java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:345)
    at java.awt.Container.add(Container.java:267)
    at GUIValg.<init>(GUIValg.java:14)
    at GUIMain.<init>(GUIMain.java:22)
    at GUIMaindriver.main(GUIMaindriver.java:11)
Avatar billede di8leva Nybegynder
01. november 2002 - 15:07 #14
hvis min GUIValg.java ser sådan her ut
----------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


class GUIValg extends JPanel
{
private JPanel valgPanel;
private JButton vareButton, leverandoerButton, ordreButton, emptyButton, opsaetningButton;

public GUIValg()
{
    setLayout(new BorderLayout());
vareButton = new JButton("Varer");
leverandoerButton = new JButton("Leverandør");
ordreButton = new JButton("Ordre");
emptyButton = new JButton("Empty");
opsaetningButton = new JButton("Opsætning");

vareButton.setToolTipText ("Viser samtlige varer på reservedelslageret");
leverandoerButton.setToolTipText ("Viser samtlige leverandører");
ordreButton.setToolTipText ("Viser samtlige ordrer");
emptyButton.setToolTipText ("");
opsaetningButton.setToolTipText ("Programmets opsætning");

valgPanel = new JPanel();
valgPanel.setLayout(null);
valgPanel.setBorder(BorderFactory.createTitledBorder("yeah"));
valgPanel.setSize(100, 100);

valgPanel.add(vareButton);
valgPanel.add(leverandoerButton);
valgPanel.add(ordreButton);
valgPanel.add(emptyButton);
valgPanel.add(opsaetningButton);

Insets insets = valgPanel.getInsets();

vareButton.setBounds (10 + insets.left, 10 + insets.top, 140, 40);
leverandoerButton.setBounds (160 + insets.left, 10 + insets.top, 140, 40);
ordreButton.setBounds (310 + insets.left, 10 + insets.top, 140, 40);
emptyButton.setBounds (460 + insets.left, 10 + insets.top, 140, 40);
opsaetningButton.setBounds (610 + insets.left, 10 + insets.top, 140, 40);

add(valgPanel, BorderLayout.CENTER);
}
}

----------------------------------------------------------------
virker det utmærkt.......

testa det...
Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 15:12 #15
Damn, fedt, Jeg siger mange tak for hjælpen! Jeg går på en EDB skole, hvor lærene ikke kan hjælpe!?!, så det er godt at få hjælp herinde!

Mange tak di8leva
Avatar billede di8leva Nybegynder
01. november 2002 - 15:14 #16
my pleasure =)
Avatar billede jesperthomsen1980 Nybegynder
01. november 2002 - 16:14 #17
Kan man kun indsætte et panel i et andet panel, hvis man sætter det i CENTER?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester