Avatar billede eikhorsholm Nybegynder
06. november 2006 - 17:24 Der er 11 kommentarer og
1 løsning

NetBeans, JPanels ovenpå hinanden.

Hvorledes kan jeg få to JPanels til, at ligge ovenpå hinanden så jeg skiftevis kan bestemme hvilken der er synligt og hvilken der er skjult?
Avatar billede eikhorsholm Nybegynder
06. november 2006 - 17:35 #1
Eller, selvfølgelig, en alternativ løsning hvis det ikke er muligt?
Avatar billede tiller3 Nybegynder
06. november 2006 - 18:26 #2
Jeg har ikke tested det, men kan du ikke bare bruge setLocation til at placere dem samme sted, og saa bruge setVisible metoden til at angive hvilken der skal vaere synlig?

Kaldet til setLocation er muligvis et problem hvis du har en layout manager, da de har det med at flytte rundt paa ting.


En bedre loesning er nok, at at du laver begge de to jpanels(Lad os kalde dem j1 og j2, og hvis du saa skal skifte fra at j1 til j2 skal vaere synlig, fjerner du bare j1 fra den JComponent som den ligger i, og bagefter indsaetter du saa j2.
Avatar billede eikhorsholm Nybegynder
06. november 2006 - 18:51 #3
Hmm, prøver lige at lade spørgsmålet være lidt åbent endnu.
Avatar billede winners79 Nybegynder
06. november 2006 - 23:43 #4
Kan du ikke prøve at beskrive hvad du vil opnå med at skifte mellem to paneler, så er det lidt nemmere at komme med alternative løsninger:)
Avatar billede eikhorsholm Nybegynder
07. november 2006 - 00:10 #5
Det er simpelthen hvis du forestiller dig, at jeg vil lave en wizard bestående af f.eks. 3 sider/vinduer el. lign.
Hertil vil der være tilknyttet knapperne frem og tilbage som bladrer igennem siderne/vinuderne og hvor der på den sidste side/vindue er en submit knap.

Ganske simpelt, men alligevel noget som volder mig problemer :-(
Avatar billede winners79 Nybegynder
07. november 2006 - 14:46 #6
Du kunne lave 3 forskellige JFrame og bare skifte synligheden på dem efterhånden som det er nødvendigt... eller hvis det skal være panels kunne du gøre noget i den her stil:

Jpanel panel1 = new JPanel(); // plus tilbehør
Jpanel panel2 = new JPanel(); // plus tilbehør
Jpanel panel3 = new JPanel(); // plus tilbehør

også har du en knap der hedder "næste" :

JButton button1 = new JButton("næste"); // den ligger på alle 3 panels

button1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
if (panel1.isVisible()){
    panel2.setVisible(true);
    panel1.setVisible(false);}
else if (panel2.isVisible()){
    panel3.setVisible(true);
    panel2.setVisible(false);
}
else if (panel3.isVisible()){
    panel1.setVisible(true);
    panel3.setVisible(false);
}

                }
            });

så bliver der skiftet mellem de 3 panels...

ps. har bare kodet det "on the fly", så der kan være fejl :)
Avatar billede eikhorsholm Nybegynder
07. november 2006 - 21:33 #7
winners79 -> Problemet er ikke så meget, at skifte mellem de forskellige JPanel's, men derimod at få dem til at ligge ovenpå hinanden gennem NetBeans?
Avatar billede winners79 Nybegynder
07. november 2006 - 23:30 #8
Hvis du bruger Netbeans "Design Editor" kan du bare placere dem oven på hinanden.

Hvis du har problemer med at se om de ligger oven på hinanden kan du jo sørge for at de har forskellige baggrundsfarver.

Her er den auto generede kode fra netbeans da jeg afprøvede det:

/*
* JFrameMedTrePanels.java
*
* Created on 7. november 2006, 23:18
*/

package test;

/**
*
* @author  Carsten
*/
public class JFrameMedTrePanels extends javax.swing.JFrame {
   
    /** Creates new form JFrameMedTrePanels */
    public JFrameMedTrePanels() {
        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.
    */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                         
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 719, Short.MAX_VALUE)
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold>                       
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFrameMedTrePanels().setVisible(true);
            }
        });
    }
   
    // Variables declaration - do not modify                   
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    // End of variables declaration                 
   
}
Avatar billede eikhorsholm Nybegynder
09. november 2006 - 21:19 #9
Skal man i NetBeans sætte ændre ens Free Layout eller sådan noget?
For jeg kan ikke placere to komponenter ovenpå hinanden. Hvis jeg prøver, så rykker den nederste ud til siden automatisk.
Avatar billede winners79 Nybegynder
09. november 2006 - 23:20 #10
Nej jeg afprøvede det med Free Design, men du kan prøve at teste det med at lave et nyt Jpanel Form og tilføj et panel til det, ellers geninstallr Netbeans, lyder som en eller anden mærkelig setting
Avatar billede eikhorsholm Nybegynder
21. november 2006 - 10:04 #11
winners79 -> Laver du ikk et svar?
Avatar billede winners79 Nybegynder
21. november 2006 - 12:44 #12
*svar* :)
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