08. maj 2004 - 11:03
Der er
8 kommentarer og
1 løsning
Mulstil mine jpanels
Jeg har en del jpanels placeret i et cardlayout, det virker også fint, men hvis jeg nu i mit program har været inde og "bladre" frem til eks. card4, og så forlader dette ved at bevæge mig hen i et andet afsnit i min grafiske brugergranseflade. så nulstiller mit cardlayout ikke hvis jeg senere kommer tilbage igen, det står stadigvæk og viser card4. Er der en løsning på dette så den altid vil vise første card når man aktivere cardlayoutet??
Skal lige siges at dette kun sker når jeg er inde og bevæge mig rundt i min grafiske brugergranseflade. når programmet lukkes ned, og startes op igen, er der ingen problemer.
Det afhænger lidt af hvad der skal ske og hvornår
Eksempel:
Hvis første kort skal vises når vinduet bliver aktivt, skal du adde en WindowAdapter til din Frame og i metoden windowActivated(WindowEvent e) afvikler du så følgende kode
CardLayout cl = (CardLayout)cardholder.getLayout();
cl.first( cardholder );
Så vil den altid vise første kort når dette vindue bliver aktivt, selvom der eventuelt skiftes mellem åbne vinduer.
Udfra din kommentar, må det blive: Den skal sættes på panelet
Hmm...kan ikke få det til at virke, har du mulighed for at vise det på nedestående kode eks.
/*
* Eks1.java
*
* Created on 8. maj 2004, 20:00
*/
/**
*
* @author
*/
public class Eks1 extends javax.swing.JFrame {
/** Creates new form Eks1 */
public Eks1() {
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() {
myCards = new javax.swing.JPanel();
card1 = new javax.swing.JPanel();
card2 = new javax.swing.JPanel();
card3 = new javax.swing.JPanel();
card4 = new javax.swing.JPanel();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
myCards.setLayout(new java.awt.CardLayout());
card1.setBorder(new javax.swing.border.TitledBorder(null, "Card1", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("MS Sans Serif", 0, 11), new java.awt.Color(102, 102, 102)));
card1.setMinimumSize(new java.awt.Dimension(1, 1));
card1.setPreferredSize(new java.awt.Dimension(100, 100));
myCards.add(card1, "1");
card2.setBorder(new javax.swing.border.TitledBorder(null, "Card2", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("MS Sans Serif", 0, 11), new java.awt.Color(102, 102, 102)));
card2.setMinimumSize(new java.awt.Dimension(1, 1));
card2.setPreferredSize(new java.awt.Dimension(100, 100));
myCards.add(card2, "2");
card3.setBorder(new javax.swing.border.TitledBorder(null, "Card3", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("MS Sans Serif", 0, 11), new java.awt.Color(102, 102, 102)));
card3.setMinimumSize(new java.awt.Dimension(1, 1));
card3.setPreferredSize(new java.awt.Dimension(100, 100));
myCards.add(card3, "3");
card4.setBorder(new javax.swing.border.TitledBorder(null, "Card4", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("MS Sans Serif", 0, 11), new java.awt.Color(102, 102, 102)));
card4.setMinimumSize(new java.awt.Dimension(1, 1));
card4.setPreferredSize(new java.awt.Dimension(100, 100));
myCards.add(card4, "card3");
getContentPane().add(myCards, java.awt.BorderLayout.CENTER);
pack();
}
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
new Eks1().show();
}
// Variables declaration - do not modify
private javax.swing.JPanel card1;
private javax.swing.JPanel card2;
private javax.swing.JPanel card3;
private javax.swing.JPanel card4;
private javax.swing.JPanel myCards;
// End of variables declaration
}
Jeg er nok ikke helt med, da dit eksempel altid vil vise card1 når vinduet aktiveres
Men hvis du tilføjer nedenstående kode til dit eksempel kan du se det, prøv at have 2 applikationer kørende (måske notepad - så du kan se dem begge) klik på notepad, så kan du se at Eks1 skifter til card2, når du igen klikker på Eks1 vil den skifte til card1
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
public void windowActivated(java.awt.event.WindowEvent evt) {
CardLayout cl = (CardLayout)myCards.getLayout();
cl.first( myCards );
}
public void windowDeactivated(java.awt.event.WindowEvent evt) {
CardLayout cl = (CardLayout)myCards.getLayout();
cl.next(myCards);
}
});