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?
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.
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;
}