Avatar billede hejhejhej Nybegynder
01. oktober 2003 - 09:21 Der er 4 kommentarer og
1 løsning

JPanel oven på et andet JPanel

Jeg har placeret et JPanel oven på et andet Jpanel. De udfylder begge to hele JFrame. Men når jeg er på JPanel_2, og trykker på det område hvor der på JPanel_1 er placeret en JCheckbox, bliver denne synlig....Hvordan kan jeg undgå dette?
Avatar billede _carsten Nybegynder
01. oktober 2003 - 14:29 #1
Er du sikker på at det er en JCheckBox og ikke en CheckBox du lavet på det
panel, altså Swing/AWT.

Ellers skal vi nok se noget kode.
Avatar billede hejhejhej Nybegynder
01. oktober 2003 - 15:27 #2
det er en JCheckBox
Avatar billede _carsten Nybegynder
01. oktober 2003 - 16:27 #3
Så mangler vi jo bare at se lidt kode............
Avatar billede _carsten Nybegynder
01. oktober 2003 - 21:29 #4
Det er lidt svært når man skal gætte, men så vidt jeg kan forestille mig,
bruger du sandsynligvis et 'null' Layout på din JFrame

Når din JFrame er initieret, glemmer du at styre hvilket panel som
skal være synligt, eks:
                            jPanel1.setVisible(true);
                            jPanel2.setVisible(false);
Altså det er muligt at gøre begge paneler synlige med musen.

Alternativet til ovenstående:
Hvis de 2 paneler skal ligge nøjagtig oven på hinanden, og udfylde
hele din JFrame, så brug et CardLayout på din JFrame, eksempel følger..


Eksempel:

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

public class Test extends JFrame {
    public Test() {
        initComponents();
        setSize(400,400);
    }


    private void initComponents() {
        jPanel1 = new JPanel();
        jButton1 = new JButton();
        jPanel2 = new JPanel();
        jButton2 = new JButton();

        getContentPane().setLayout(new CardLayout());


        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                exitForm(evt);
            }
        });

        jPanel1.setBackground(new Color(51, 102, 255));
        jButton1.setText("Vis panel 2");
        jButton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                movePanel(evt);
            }
        });

        jPanel1.add(jButton1);

        getContentPane().add(jPanel1, "card1");

        jPanel2.setBackground(new Color(51, 255, 51));
        jButton2.setText("Vis panel 1");
        jButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                movePanel(evt);
            }
        });

        jPanel2.add(jButton2);

        getContentPane().add(jPanel2, "card2");
    }

    private void movePanel(ActionEvent evt) {
    CardLayout cl = (CardLayout)this.getContentPane().getLayout();
        cl.next(this.getContentPane());
    }

    private void exitForm(WindowEvent evt) {
        System.exit(0);
    }


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

    private JButton jButton1;
    private JButton jButton2;
    private JPanel jPanel1;
    private JPanel jPanel2;
}
Avatar billede hejhejhej Nybegynder
04. oktober 2003 - 14:16 #5
det kan man bare se...
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