Avatar billede jugsaw Nybegynder
03. maj 2004 - 06:56 Der er 6 kommentarer og
2 løsninger

CardLayout hvordan?

Da jeg har lidt begynder problemer med at overskue opbygningen i et cardlayout, vil jeg gerne have hjælp til nedestående.

Jeg har et Jpanel (GUI_NyTestbesvarelse)

inde i dette Jpanel, har jeg 2 andre Jpaneler.

jPanel (KortVaelger) Indeholder 2 jButtons (frem) (tilbage)

jPanel (KortHolder) indeholder 3 jpanels som udgør min kort //er ikke sikker på at de er placeret rigtigt her//

Grunden til at jeg har lavet 2 jPanels til at starte med, er at de begge skal være synlige på skærmen på samme tid, hvor den ene viser de 2 knapper man kan trykke på for at bladre, og den anden viser det indhold (de forskelige kort) der skal kunne vises.

Det jeg er i twivl om er, hvordan koden for de 2 knapper skal se ud, for at deres funktion kan opfyldes frem tilbage.

Min kode kommer her:


public class GUI_NyTestbesvarelse extends javax.swing.JPanel {
   
    /** Creates new form GUI_TilfoejTestbesvarelse */
    public GUI_NyTestbesvarelse() {
        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() {
        KortVaelger = new javax.swing.JPanel();
        frem = new javax.swing.JButton();
        tilbage = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        KortHolder = new javax.swing.JPanel();
        Kort1 = new javax.swing.JPanel();
        Kort2 = new javax.swing.JPanel();
        Kort3 = new javax.swing.JPanel();

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

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

        frem.setText("N\u00e6ste >>");
        KortVaelger.add(frem, new org.netbeans.lib.awtextra.AbsoluteConstraints(700, 20, 80, -1));

        tilbage.setText("<< Forrige");
        KortVaelger.add(tilbage, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 20, -1, -1));

        KortVaelger.add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 10, 780, 10));

        add(KortVaelger, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 560, 780, 50));

        KortHolder.setLayout(new java.awt.CardLayout());

        Kort1.setBackground(new java.awt.Color(255, 0, 51));
        KortHolder.add(Kort1, "card2");

        Kort2.setBackground(new java.awt.Color(51, 51, 255));
        KortHolder.add(Kort2, "card3");

        Kort3.setBackground(new java.awt.Color(0, 153, 51));
        KortHolder.add(Kort3, "card4");

        add(KortHolder, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 800, 560));

    }
   
   
    // Variables declaration - do not modify
    private javax.swing.JPanel Kort1;
    private javax.swing.JPanel Kort2;
    private javax.swing.JPanel Kort3;
    private javax.swing.JPanel KortHolder;
    private javax.swing.JPanel KortVaelger;
    private javax.swing.JButton frem;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JButton tilbage;
    // End of variables declaration
   
}
Avatar billede jugsaw Nybegynder
03. maj 2004 - 06:57 #1
Kan lige tilføje at jPanel (KortHolder) benytter cardlayout
Avatar billede ulrikm Nybegynder
03. maj 2004 - 17:41 #2
Du skal tilføje et CardLayout som variabel ("cardLayout"), oprette med new CardLayout, kalde kortHolder.setLayout(cardLayout) og tilføje en ActionListener til "frem" og "tilbage". Koden i din ActionListeners actionPerformed() metode vil se sådan ud for "frem":

cardLayout.next( kortHolder );

og for "tilbage":

cardLayout.previous( kortHolder );
Avatar billede jugsaw Nybegynder
03. maj 2004 - 19:20 #3
Hmm...kan ikke lige få det til at makke ret, kan du ikke prøve at passe det ind i koden ovenover.
Avatar billede _carsten Nybegynder
03. maj 2004 - 20:58 #4
Du tilføjer de 2 buttons med hver sin actionPerformed() til GUI_NyTestbesvarelse

Derefter tilføjer du følgende til GUI_NyTestbesvarelse

import java.awt.*;

    // KONSTRUKTØR
    public GUI_NyTestbesvarelse() {
        initComponents();
        layout = (CardLayout)KortHolder.getLayout();
    }

    // BUTTON NEXT
    private void next(java.awt.event.ActionEvent evt) {
        layout.next(kortHolder);
    }

    // BUTTON PREVIOUS
    private void prev(java.awt.event.ActionEvent evt) {
        layout.previous(kortHolder);
    }
   

    // VARIABLER
    private javax.swing.JButton tilbage;
    // End of variables declaration
    private CardLayout layout; // TILFØJ LAYOUT REFERENCE

}

Så skulle det meget gerne virke.
Avatar billede jugsaw Nybegynder
03. maj 2004 - 21:57 #5
Den vil ikke helt godkende det de skal stå i knapperne


import java.awt.*;

public class GUI_NyTestbesvarelse extends javax.swing.JPanel {
   
    /** Creates new form GUI_TilfoejTestbesvarelse */
    public GUI_NyTestbesvarelse() {
        initComponents();
        layout = (CardLayout)KortHolder.getLayout();   
    }
   
    /** 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() {
        KortVaelger = new javax.swing.JPanel();
        frem = new javax.swing.JButton();
        tilbage = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        KortHolder = new javax.swing.JPanel();
        Kort1 = new javax.swing.JPanel();
        Kort2 = new javax.swing.JPanel();
        Kort3 = new javax.swing.JPanel();

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

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

        frem.setText("N\u00e6ste >>");
        frem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fremActionPerformed(evt);
            }
        });

        KortVaelger.add(frem, new org.netbeans.lib.awtextra.AbsoluteConstraints(700, 20, 80, -1));

        tilbage.setText("<< Forrige");
        tilbage.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tilbageActionPerformed(evt);
            }
        });

        KortVaelger.add(tilbage, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 20, -1, -1));

        KortVaelger.add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 10, 780, 10));

        add(KortVaelger, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 560, 780, 50));

        KortHolder.setLayout(new java.awt.CardLayout());

        Kort1.setBackground(new java.awt.Color(255, 0, 51));
        KortHolder.add(Kort1, "card2");

        Kort2.setBackground(new java.awt.Color(51, 51, 255));
        KortHolder.add(Kort2, "card3");

        Kort3.setBackground(new java.awt.Color(0, 153, 51));
        KortHolder.add(Kort3, "card4");

        add(KortHolder, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 800, 560));

    }

    private void tilbageActionPerformed(java.awt.event.ActionEvent evt) {
        layout.previous(kortHolder);              <-- FEJL
    }

    private void fremActionPerformed(java.awt.event.ActionEvent evt) {
        layout.next(kortHolder);                <-- FEJL


    }
   
   
    // Variables declaration - do not modify
    private javax.swing.JPanel Kort1;
    private javax.swing.JPanel Kort2;
    private javax.swing.JPanel Kort3;
    private javax.swing.JPanel KortHolder;
    private javax.swing.JPanel KortVaelger;
    private javax.swing.JButton frem;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JButton tilbage;
    // End of variables declaration
    private CardLayout layout;                     

Fejl meddelse:

GUI_NyTestbesvarelse.java [79:1] cannot resolve symbol
symbol  : variable kortHolder
location: class GUI_NyTestbesvarelse
        layout.previous(kortHolder);

GUI_NyTestbesvarelse.java [96:1] cannot resolve symbol
symbol  : class CardLayout
location: class GUI_NyTestbesvarelse
    private CardLayout layout;
            ^
Avatar billede jugsaw Nybegynder
03. maj 2004 - 21:58 #6
2 stk. K der var sat som lille :O)
Avatar billede _carsten Nybegynder
03. maj 2004 - 21:59 #7
Yes !
Avatar billede jugsaw Nybegynder
03. maj 2004 - 22:06 #8
Så virker det sørme, takker for hjælpen. Jeg har valgt at dele points ligeligt mellem jer, ulrikm for oplæget, og _carsten for detaljerne.
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