Avatar billede jugsaw Nybegynder
28. april 2004 - 11:33 Der er 22 kommentarer og
1 løsning

Slette indhold i et jPanel

I tidligere spg. http://www.eksperten.dk/spm/493634 fandt jeg ud af hvordan man kan kalde en anden klasse og sætte ind i et jPanel. Så langt så godt.... :O)

Nu har jeg så 3 klasser som har mulighed for at komme ind i dette jpanel, alt efter om man trykker på Jbutton 1 2 eller 3 (eks. en hovedmenu, som kan vise 3 andre skærmbilleder i et jPanel,

Problemet består i at det hele til sidst står oven i hinanden, hvis jeg har trykket på alle 3 Jbuttons. (Når jeg arbejder med Jpanels inden for den samme klasse kan jeg styre det med setVisible(); metoden).

1) Hvordan kan jeg få det til at virke når indholdet er hentet fra en anden klasse?

eks.
jButton 1

private void eksportActionPerformed(java.awt.event.ActionEvent evt) {
        visHer.add(eks, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();

Dette skal fjernes igen ved tryk på jButton 2 eller 3 (alt indhold vises i det samme jPanel) jButton skal kunne fjerne det gamle indhold, samtidigt med at det nye vises.



2) Er der i det hele taget en smartere metode man kan bruge frem for setVisible(); da den bliver ret omfattende hvia der er mange jPaneler og jButtons der er i spil i samme klasse. Det ender tit med at se ud som følger:

private void nyTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
       
        dit.setVisible(false);
        dat.setVisible(false);
        top.setVisible(true);
        bund.setVisible(false);
Avatar billede _carsten Nybegynder
28. april 2004 - 12:59 #1
1) Du kan lave en metode som rydder op i panelet (se nedenfor)
2) Ja - du kan bruge CardLayout i det panel som skifter indhold

import java.awt.Color;
import java.awt.Component;
import javax.swing.JPanel;

public class JFrame extends javax.swing.JFrame {

    public JFrame() {
        initComponents();
    }
   
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addPanel(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.NORTH);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pBlue = new MyPanel(Color.BLUE);
        pGreen = new MyPanel(Color.GREEN);
        pRed = new MyPanel(Color.RED);
       
        jPanel1.add(pBlue);
        jPanel1.add(pGreen);
        setSize(300, 300);
        pack();
    }

    private void addPanel(java.awt.event.ActionEvent evt) {
        rydOp();
        jPanel1.add(pRed);
        jPanel1.validate(); // der er ingen grund til at kalde validate() før.
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
// RYDDER OP
    private void rydOp(){
        Component[] comp = jPanel1.getComponents();
       
        for(int i = 0; i < comp.length; i++){
            jPanel1.remove(comp[i]);
        }
    }

    public static void main(String args[]) {
        new JFrame().show();
    }

    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private MyPanel pBlue, pGreen, pRed;
}


class MyPanel extends JPanel{
    public MyPanel(Color color){
        super();
        setBackground(color);
        setSize(200, 200);
    }
}
Avatar billede pkrasmus Nybegynder
28. april 2004 - 13:02 #2
Du kan bruge remove(..) metoden på visHer objektet. Du kan alternativt også benytte removeAll().

mvh
Avatar billede _carsten Nybegynder
28. april 2004 - 13:03 #3
Eksempel på CardLayout (ikke det bedste jeg har lavet, men det jeg lige kunne finde)
jeg når nok ikke mere i dag, så jeg håber du får det bedste ud af det

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

public class TestCardLayout extends JFrame{
   
    public TestCardLayout() {
        initComponents();
        setSize(500,500);
    }
   
    private void initComponents(){
        panelWest = new JPanel();
        panelEast = new JPanel();
        panel2 = new Panel2();
        panel3 = new Panel3();
        panel4 = new Panel4();
       
        menuBar = new JMenuBar();
        menu = new JMenu();
        item2 = new JMenuItem();
        item3 = new JMenuItem();
        item4 = new JMenuItem();
       
        panelWest.setLayout(new CardLayout());
        panelWest.setPreferredSize(new Dimension(250,500));
       
        panelEast.setBackground(new java.awt.Color(255,255,0));
        panelEast.setPreferredSize(new Dimension(250,500));
       
        panel2.setBackground(new Color(0,102,255));
        panel3.setBackground(new Color(255,0,50));
        panel4.setBackground(new Color(50,150,0));
       
        panelWest.add(panel2, "panelA");
        panelWest.add(panel3, "panelB");
        panelWest.add(panel4, "panelC");
       
        menu.setText("Menu");
       
        item2.setText("Vis blåt JPanel");
        item2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                menuTakeAction(evt);
            }
        });
        item3.setText("Vis rødt JPanel");
        item3.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                menuTakeAction(evt);
            }
        });
        item4.setText("Vis grønt JPanel");
        item4.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                menuTakeAction(evt);
            }
        });
       
        menu.add(item2);
        menu.add(item3);
        menu.add(item4);
       
        menuBar.add(menu);
       
        setJMenuBar(menuBar);
       
        getContentPane().add(panelWest, BorderLayout.WEST);
        getContentPane().add(panelEast, BorderLayout.EAST);
       
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                System.exit(0);
            }
        });
       
        pack();
    }
   
    private void menuTakeAction(ActionEvent evt){
        CardLayout cl = (CardLayout) panelWest.getLayout();

        if(evt.getSource().equals(item2)){
            cl.show(panelWest, "panelA");
        }
        else if(evt.getSource().equals(item3)){
            cl.show(panelWest, "panelB");
        }
        else if(evt.getSource().equals(item4)){
            cl.show(panelWest, "panelC");
        }
    }
   
    public static void main(String[] args) {
        new TestCardLayout().show();
    }
   
    private JPanel panelWest, panelEast;
    private Panel2 panel2;
    private Panel3 panel3;
    private Panel4 panel4;
    private JMenuBar menuBar;
    private JMenu menu;
    private JMenuItem item2, item3, item4;
}


class Panel2 extends JPanel{
    public Panel2(){
        setBackground(new Color(0,102,255));
    }
}

class Panel3 extends JPanel{
    public Panel3(){
        setBackground(new Color(255,0,50));
    }
}

class Panel4 extends JPanel{
    public Panel4(){
        setBackground(new Color(50,150,0));
    }
}
Avatar billede jugsaw Nybegynder
28. april 2004 - 15:28 #4
pkrasmus Den løser desværre ikke mit problem

_carsten Jeg har forsøgt at putte din rydOp metode ind i min kode, men den virker kun delvis. Jeg har forsøgt at beskrive det hele lidt nærmere her under.



GUI_Hovedmenu
Der findes 3 knapper til at starte med i et panel.
Administration af testbesvarelser (kalder et andet panel (1) i samme klasse) Virker
Administration af Items (kalder et andet panel (2) i samme klasse) Virker
Eksport (kalder et andet panel i en anden klasse) Virker

(1)  admAfTestbesvarelser
      Panel med 2 knapper     
      Opret ny testbesvarelse (kalder et andet panel i en anden klasse) Virker
      Rediger testbesvarelse (ikke færdiggjort endnu)

(2)  admAfItems
      Panel med 3 knapper
      Tilføj nyt item (kalder et andet panel i en anden klasse)
      Redigering af item (ikke færdiggjort endnu)
      Slet item (ikke færdiggjort endnu)


Man kan sige at der findes 3 lag i alt (lag 1 øverst, lag 2 lige neden under, lag 3 overlapper lag 2 og fylder resten ud neden under), som der skal holdes styr på, mit problem ligger ikke i at vise de forskellige ting, men derimod at jeg ikke kan bevæge mig mellem de 3 lag og undgå at tingene lægger sig oven i hinanden.

Planen er at jeg vil benytte cardlayout til lag 3 som skal indeholde en hel masse ”sider” som man kan bevæge sig frem og tilbage i, alt efter knapvalg i bunden

For det skal være nemmere at forstå, har jeg uploadet nogle billeder der kan ses ved tryk på følgende links
Lag1
http://www.upit.dk/files/pic1.JPG

Lag2
http://www.upit.dk/files/pic2.JPG

Lag3
http://www.upit.dk/files/Lag3


Næste indlæg viser koden for GUI_Hovedmenu som indeholder de forskelige jButtons. Koden under hver enkelt knap vil nok virke rodet og tilfældig, men det skyldes en voksende hovedpine og øget frustration :O)
Avatar billede jugsaw Nybegynder
28. april 2004 - 15:29 #5
import java.awt.Component;


//*********Skal flyttes over i vores rigtige main klasse senere*******
import javax.swing.UIManager;
//********************************************************************






public class GUI_Hovedmenu extends javax.swing.JFrame {
   
    /** Creates new form GUI_Hovedmenu */
    public GUI_Hovedmenu() {
        initComponents();
    }
   
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
    private void initComponents() {
        hovedmenuVenstre = new javax.swing.JPanel();
        logo = new javax.swing.JLabel();
        logo.setVisible(false);
        hovedmenuTop = new javax.swing.JPanel();
        admTestbesvarelse = new javax.swing.JButton();
        admItem = new javax.swing.JButton();
        eksport = new javax.swing.JButton();
        admAfTestbesvarelser = new javax.swing.JPanel();
        admAfTestbesvarelser.setVisible(false);
        nyTestbesvarelse = new javax.swing.JButton();
        RedigeringAfTestbesvarelse = new javax.swing.JButton();
        admAfItems = new javax.swing.JPanel();
        admAfItems.setVisible(false);
        tilfoejNytItem = new javax.swing.JButton();
        redigeringAfItem = new javax.swing.JButton();
        sletItem = new javax.swing.JButton();
        visHer = new javax.swing.JPanel();
        ntb = new GUI_NyTestbesvarelse();
        eks = new GUI_Eksport();
        tni = new GUI_TilfoejNytItem();

        getContentPane().setLayout(null);

        setTitle("Test");
        setBackground(new java.awt.Color(221, 221, 221));
        setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        hovedmenuVenstre.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        hovedmenuVenstre.setBackground(new java.awt.Color(4, 65, 115));
        hovedmenuVenstre.setBorder(new javax.swing.border.EtchedBorder());
        hovedmenuVenstre.setForeground(new java.awt.Color(255, 255, 255));
        logo.setIcon(new javax.swing.ImageIcon("C:\\Documents and Settings\\Kim Eriksen\\Dokumenter\\MMI Java\\Logo4.JPG"));
        hovedmenuVenstre.add(logo, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 520, 140, 120));

        getContentPane().add(hovedmenuVenstre);
        hovedmenuVenstre.setBounds(0, 0, 141, 642);

        hovedmenuTop.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        hovedmenuTop.setBackground(new java.awt.Color(219, 219, 219));
        hovedmenuTop.setBorder(new javax.swing.border.EtchedBorder());
        hovedmenuTop.setDoubleBuffered(false);
        admTestbesvarelse.setBackground(new java.awt.Color(204, 204, 255));
        admTestbesvarelse.setText("<html><center>Administration<br>af testbesvarelser</center></html>");
        admTestbesvarelse.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                admTestbesvarelseActionPerformed(evt);
            }
        });

        hovedmenuTop.add(admTestbesvarelse, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 10, 140, -1));

        admItem.setText("<html><center>Administration<br>af items</center></html>");
        admItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                admItemActionPerformed(evt);
            }
        });

        hovedmenuTop.add(admItem, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 10, 140, -1));

        eksport.setText("Eksport");
        eksport.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                eksportActionPerformed(evt);
            }
        });

        hovedmenuTop.add(eksport, new org.netbeans.lib.awtextra.AbsoluteConstraints(540, 10, 140, 40));

        getContentPane().add(hovedmenuTop);
        hovedmenuTop.setBounds(140, 0, 790, 60);

        admAfTestbesvarelser.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        admAfTestbesvarelser.setBackground(new java.awt.Color(219, 219, 219));
        admAfTestbesvarelser.setBorder(new javax.swing.border.EtchedBorder());
        nyTestbesvarelse.setText("<html><center>Opret ny<br> testbesvarelse</center></html>");
        nyTestbesvarelse.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nyTestbesvarelseActionPerformed(evt);
            }
        });

        admAfTestbesvarelser.add(nyTestbesvarelse, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 140, -1));

        RedigeringAfTestbesvarelse.setText("<html><center>Redigering af<br> testbesvarelse</center></html>");
        admAfTestbesvarelser.add(RedigeringAfTestbesvarelse, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 10, 140, -1));

        getContentPane().add(admAfTestbesvarelser);
        admAfTestbesvarelser.setBounds(140, 58, 790, 60);

        admAfItems.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        admAfItems.setBackground(new java.awt.Color(219, 219, 219));
        admAfItems.setBorder(new javax.swing.border.EtchedBorder());
        tilfoejNytItem.setText("<html><center>Tilf\u00f8j<br>nyt item</center></html>");
        tilfoejNytItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tilfoejNytItemActionPerformed(evt);
            }
        });

        admAfItems.add(tilfoejNytItem, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 140, -1));

        redigeringAfItem.setText("<html><center>Redigering af<br>item</center></html>");
        admAfItems.add(redigeringAfItem, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 10, 140, -1));

        sletItem.setText("<html><center>Slet<br>item</center></html>");
        admAfItems.add(sletItem, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 10, 140, -1));

        getContentPane().add(admAfItems);
        admAfItems.setBounds(140, 58, 790, 60);

        visHer.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        visHer.setBackground(new java.awt.Color(219, 219, 219));
        visHer.setBorder(new javax.swing.border.EtchedBorder());
        visHer.setPreferredSize(new java.awt.Dimension(792, 582));
        getContentPane().add(visHer);
        visHer.setBounds(140, 58, 790, 584);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-940)/2, (screenSize.height-677)/2, 940, 677);
    }

    private void tilfoejNytItemActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(tni, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();
    }

    private void nyTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(ntb, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 1, 792, 587));
        visHer.validate();
    }

    private void admTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
        admAfTestbesvarelser.setVisible(true);
        admAfItems.setVisible(false);
       
    }

    private void admItemActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        admAfItems.setVisible(true);
        admAfTestbesvarelser.setVisible(false);
       
    }

    private void eksportActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(eks, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();
       
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    private void rydOp(){
        Component[] comp = visHer.getComponents();
       
        for(int i = 0; i < comp.length; i++){
            visHer.remove(comp[i]);
        }
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        //*********Skal flyttes over i vores rigtige main klasse senere*******
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
          catch(Exception e)
          {
              e.printStackTrace();
          }
        //********************************************************************
        new GUI_Hovedmenu().show();
    }
   
    // Variables declaration - do not modify
    private javax.swing.JButton RedigeringAfTestbesvarelse;
    private javax.swing.JPanel admAfItems;
    private javax.swing.JPanel admAfTestbesvarelser;
    private javax.swing.JButton admItem;
    private javax.swing.JButton admTestbesvarelse;
    private javax.swing.JButton eksport;
    private javax.swing.JPanel hovedmenuTop;
    private javax.swing.JPanel hovedmenuVenstre;
    private javax.swing.JLabel logo;
    private javax.swing.JButton nyTestbesvarelse;
    private javax.swing.JButton redigeringAfItem;
    private javax.swing.JButton sletItem;
    private javax.swing.JButton tilfoejNytItem;
    private javax.swing.JPanel visHer;
    // End of variables declaration
    private GUI_NyTestbesvarelse ntb;
    private GUI_TilfoejNytItem tni;
    private GUI_Eksport eks;
}
Avatar billede _carsten Nybegynder
28. april 2004 - 21:49 #6
Jeg er stadig ikke helt med, kan du uploade et billede af det som ser forkert ud ??

Kigger måske forbi senere på aftenen.
Avatar billede jugsaw Nybegynder
29. april 2004 - 16:52 #7
Her er 3 billeder der viser noge af de "fejl" jeg bøvler med:

http://www.upit.dk/files/Fejl_eks1.JPG
http://www.upit.dk/files/Fejl_eks2.JPG
http://www.upit.dk/files/Fejl_eks3.JPG


Fejl1
Har trykket på "Administration af testbesvarelser", herefter "Opret ny testbesvarelse", her er der så problemer med at det panel indeholdende "Opret ny Testbesvarelse" & "Rediger testbesvarelse" ikke forsvinder.

Fejl2
Har trykket på "Eksport" herefter på "Administration af items" her forsvinder indholdet fra "Eksport" ikke.

Fejl3
Har trykket på "Administration af items" herefter på "Tilføj nyt item" her forsvinder det panel indeholdende "Tilføj nyt item", "Rediger Item" & "Slet item" ikke.

Alle knapper viser det indhold der skal vises, men de formår ikke at fjerne det forgående igen.

Ideen i hvordan det burde virke:
Som beskrevet tidligere ser jeg det som 3 lag.

1 lag panel med følgende knapper "Administration af testbesvarelser", Administration af items" & "Eksport" (dette lag skal altid være synligt)

(Til en hver tid når man trykker på en af disse 3 knapper skal alt i lag 2 & 3 fjernes, pånær det panel som den valgte knap er koblet sammen med.

2 lag (fremkommer lige nedenunder lag 1) Dette lag indeholder 2 mulige paneler med tilhørende knapper. Ideen er at de kommer frem ved tryk i første lag, men forsvinder igen ved tryk på en af de knapper der nu måtte være i lag 2. Samtidigt ved tryk på en vilkorlig knap i lag2 vises lag3 gældende for det indhold knapper i lag 2 beskriver.

(Til en hver tid når man trykker på en af de knapper som findes (2 paneler alt efter valg, 2 knapper på det ene og 3 på det andet), skal alt i lag 3 fjernes, pånær det panel som den valgte knap er koblet sammen med.



Knapper i lag1 henviser til andre paneler i samme klasse (pånær eksport, som henter indhold fra en anden GUI klasse)

Knapper i lag2 henter alle sammen indhold fra andre GUI klasser.

Lag3 viser det indhold der er hentet fra de andre GUI klasser.

Håber at det giver en eller anden form for mening :O)
Avatar billede _carsten Nybegynder
29. april 2004 - 20:30 #8
Nu har jeg kun lige skimmet din kode, men du mangler en
visHer.validate(); i admTestbesvarelseActionPerformed

Alternativt kan du tilføje en visHer.validate(); som sidste linie i rydOp(), der sker ikke andet validate() sommetider vil blive brugt en gang mere end det er nødvendigt.

Vend tilbage hvis det ikke virker !
Avatar billede jugsaw Nybegynder
29. april 2004 - 22:04 #9
Det har desværre ikke gjort nogen forskel, de samme fejl går stadigvæk igen.

Knapkode som den ser ud nu

    private void RedigeringAfTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(rtb, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();
    }

    private void tilfoejNytItemActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(tni, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();
    }

    private void nyTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(ntb, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 1, 792, 587));
        visHer.validate();
    }

    private void admTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        admAfTestbesvarelser.setVisible(true);
        admAfItems.setVisible(false);
        visHer.validate();
    }

    private void admItemActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        admAfItems.setVisible(true);
        admAfTestbesvarelser.setVisible(false);
        visHer.validate();
    }

    private void eksportActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(eks, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    private void rydOp(){
        Component[] comp = visHer.getComponents();
       
        for(int i = 0; i < comp.length; i++){
            visHer.remove(comp[i]);
            visHer.validate();
        }
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        //*********Skal flyttes over i vores rigtige main klasse senere*******
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
          catch(Exception e)
          {
              e.printStackTrace();
          }
        //********************************************************************
        new GUI_Hovedmenu().show();
    }
Avatar billede jugsaw Nybegynder
29. april 2004 - 22:12 #10
Sidder og tænker lidt over om problemet ikke ligger i rydOp()

Den tager så vidt jeg kan se kun hensyn til Jpanel "visHer", men der er jo også det  jPanel "admAfTestbesvarelser" i lag 2 som skal ryddes op i, og muligvis i lag 1 "hovedmenuTop" Prøver lige et par småting i den retning.....
Avatar billede _carsten Nybegynder
29. april 2004 - 22:16 #11
For mig at se er det hovedmenuTop du ikke ryddr op i
Avatar billede _carsten Nybegynder
29. april 2004 - 22:19 #12
Okay, det var vi rimelig enige om.

Du skal have en validate() på hovedmenuTop, der adder du 3 items, men derefter gør du ingenting når du viser/skjuler.

Så dit layout skal også valideres her
Avatar billede jugsaw Nybegynder
29. april 2004 - 22:21 #13
Kan jeg ikke lige få dig til at vise hvor jeg skal sætte koden ind
Avatar billede _carsten Nybegynder
29. april 2004 - 22:25 #14
private void admTestbesvarelseActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        admAfTestbesvarelser.setVisible(true);
        admAfItems.setVisible(false);
        visHer.validate();
        hovedmenuTop.validate();
    }

    private void admItemActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        admAfItems.setVisible(true);
        admAfTestbesvarelser.setVisible(false);
        visHer.validate();
        hovedmenuTop.validate();
    }
Avatar billede _carsten Nybegynder
29. april 2004 - 22:27 #15
private void rydOp(){
        Component[] comp = visHer.getComponents();
       
        for(int i = 0; i < comp.length; i++){
            visHer.remove(comp[i]); 
        }
        visHer.validate(); // Flyt udenfor løkke, der er ingen grund til gøre
                            // før den færdig med fjerne komponenter
    }
Avatar billede jugsaw Nybegynder
29. april 2004 - 22:37 #16
Hmm...det hjalp desværre ikke, det er da lige til at få grå hår af. der sker følgende:

Jeg starter med at have de 3 knapper i lag 1, det hele virker hvis jeg starter med at trykke på hver knap fra venstre mod højre. efter af være nået til den højre knap "eksport" forsøger jeg så at gå tilbage igen **, her sker der så ikke noget ved tryk på den miderste knap "Administration af items" og ved tryk på den knap længst til højre kommer så lag 2 frem gældende for den knap.

**Efter tryk på knappen "eksport" forsvinder lag 3 ikke igen.

Så efter at have foretaget en test hvor jeg starter fra højre mod venstre og tilbage igen, står det hele oven på hinanden.
Avatar billede _carsten Nybegynder
29. april 2004 - 22:40 #17
Du mangler også en her !

    private void eksportActionPerformed(java.awt.event.ActionEvent evt) {
        rydOp();
        visHer.add(eks, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, -1, 792, 587));
        visHer.validate();
        hovedmenuTop.validate();

    }
Avatar billede jugsaw Nybegynder
29. april 2004 - 22:46 #18
Ok, nu virker samspillet mellem knap 1 og 2 i lag 1, her kan jeg nu trykke frem og tilbage mellem de 2 knapper og lag 2 vises rigtigt i henhold til knapperne.

knappen eksport rydder stadigvæk ikke op efter sig, så det ser ud til at være det eneste problem i lag 1 lige pt.
Avatar billede jugsaw Nybegynder
29. april 2004 - 23:01 #19
Kan det være rydOp() der har et problem i sin opbygning når der hentes indhold fra andre klasser, virker lidt som om den bliver sat ud af spillet i de tilfælde.
Avatar billede _carsten Nybegynder
29. april 2004 - 23:05 #20
Det eneste "eksport" er at den adder "eks" til "visher",
så nej - rydOp() bliver i ikke sat ud af spillet

Jeg kan ikke se eksport gør andet, prøv at kalde repaint() efter hovedmenuTop.validate();


Jeg tillader mig i øvrigt at slutte for i dag
Avatar billede jugsaw Nybegynder
29. april 2004 - 23:08 #21
Den hjalp desværre heller ikke, Jeg takker for din hjælp indtil videre.
Avatar billede jugsaw Nybegynder
29. april 2004 - 23:26 #22
Det jeg mente tidligere med metoden rydOp() var at når man har trykket på knappen "eksport" og lag 3 vises, så sker der ikke noget når man så efterfølgende trykker på knap 1 eller 2, og de har jo også rydOp() metoden (den burde vel fjerne indhold fra lag 3 "visHer" men det ser ikke ud som om dette sker.
Avatar billede jugsaw Nybegynder
03. maj 2004 - 07:00 #23
Hmmmm....bøvl med databasen, nu er det 3 gang at jeg acceptere denne bescarelse på mit spg.
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