08. maj 2002 - 00:26
Der er
3 kommentarer og 2 løsninger
Kun contentPane2 skal blive usynlig
I dette eksempel vil jeg have at kun contentPane2 bliver usynlig når jeg trykker på opdater, men af en eller anden grund bliver hele Jframen usynlig? import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Reservation extends JFrame implements ActionListener { boolean inAnApplet = true; final boolean shouldFill = true; final boolean shouldWeightX = true; JButton opret,søg,opdater,slet,nyGæst,søgGæst,afslut,checkInd,checkUd; JTextField skrivNr,skrivUdlStart,skrivUdlSlut,gæstNr; Container contentPane = getContentPane(); Container contentPane2 = getContentPane(); public Reservation() { GridBagLayout gridbag = new GridBagLayout(); GridBagLayout gridbag2 = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); GridBagConstraints c2 = new GridBagConstraints(); contentPane.setLayout(gridbag); contentPane2.setLayout(gridbag2); c.fill = GridBagConstraints.HORIZONTAL; c2.fill = GridBagConstraints.HORIZONTAL; JLabel skriv = new JLabel("Reservations Nr"); c.gridx = 0; c.gridy = 0; gridbag.setConstraints(skriv, c); contentPane2.add(skriv); JLabel skriv2 = new JLabel("Dato Udlej. Start"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 1; gridbag.setConstraints(skriv2, c); contentPane2.add(skriv2); JLabel skriv3 = new JLabel("Dato Udlej. Slut"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 2; gridbag.setConstraints(skriv3, c); contentPane2.add(skriv3); checkInd = new JButton("CheckInd"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 3; gridbag.setConstraints(checkInd, c); contentPane2.add(checkInd); JLabel skriv4 = new JLabel("Gæstnummer"); c.insets = new Insets(30,0,0,0); c.gridx = 0; c.gridy = 4; gridbag.setConstraints(skriv4, c); contentPane2.add(skriv4); skrivNr = new JTextField(10); c.insets = new Insets(0,20,0,0); c.gridx = 1; c.gridy = 0; gridbag.setConstraints(skrivNr, c); contentPane2.add(skrivNr); skrivUdlStart = new JTextField(10); c.insets = new Insets(10,20,0,0); c.gridx = 1; c.gridy = 1; gridbag.setConstraints(skrivUdlStart, c); contentPane2.add(skrivUdlStart); skrivUdlSlut = new JTextField(10); c.insets = new Insets(10,20,0,0); c.gridx = 1; c.gridy = 2; gridbag.setConstraints(skrivUdlSlut, c); contentPane2.add(skrivUdlSlut); checkUd = new JButton("CheckUd"); c.insets = new Insets(10,20,0,0); c.gridx = 1; c.gridy = 3; gridbag.setConstraints(checkUd, c); contentPane2.add(checkUd); gæstNr = new JTextField(10); c.insets = new Insets(30,20,0,0); c.gridx = 1; c.gridy = 4; gridbag.setConstraints(gæstNr, c); contentPane2.add(gæstNr); opret = new JButton("Opret"); c.insets = new Insets(0,250,0,0); c.gridx = 2; c.gridy = 0; gridbag.setConstraints(opret, c); contentPane.add(opret); søg = new JButton("Søg"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 1; gridbag.setConstraints(søg, c); contentPane.add(søg); opdater = new JButton("Opdater"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 2; gridbag.setConstraints(opdater, c); contentPane.add(opdater); opdater.addActionListener(this); slet = new JButton("Slet"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 3; gridbag.setConstraints(slet, c); contentPane.add(slet); nyGæst = new JButton("Ny Gæst"); c.insets = new Insets(20,250,0,0); c.gridx = 2; c.gridy = 4; gridbag.setConstraints(nyGæst, c); contentPane.add(nyGæst); søgGæst = new JButton("Søg Gæst"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 5; gridbag.setConstraints(søgGæst, c); contentPane.add(søgGæst); afslut = new JButton("Afslut"); c.insets = new Insets(20,250,0,0); c.gridx = 2; c.gridy = 6; gridbag.setConstraints(afslut, c); contentPane.add(afslut); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { if (inAnApplet) { dispose(); } else { System.exit(0); } } }); } public void actionPerformed( ActionEvent e ) { if( e.getSource() == opdater ); { contentPane2.setVisible(false); } } }
Annonceindlæg tema
Der er ingen forskel mellem contentpane 1 og 2, det er det samme. Du får ikke flere forskellige contentpanes ved at kalde getContentPane flere gange. En JFrame har ét contentpane, som du kan få eller sætte via getContentpane setContentpane, ønsker du flere containere skal du opdele denne contentpane (en container) i andre containere, f.eks. kunne du adde alle de komponenenter du har i dit fiktive contentpane2 til et JPanel og så adde det JPanel til contentpane. I din actionPerformed metode sætter du så dit jpanel til usynlig.
Hvis du lige gjorde det for mig ville jeg være dig yderst taknemmelig... jeg har rodet med dette problem i flere uger snart!
Her er din tilretttede kode, ret selv så constraints passer. Håber det hjælper dig lidt igang :) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Reservation extends JFrame implements ActionListener { boolean inAnApplet = true; final boolean shouldFill = true; final boolean shouldWeightX = true; JButton opret,søg,opdater,slet,nyGæst,søgGæst,afslut,checkInd,checkUd; JTextField skrivNr,skrivUdlStart,skrivUdlSlut,gæstNr; Container contentPane = getContentPane(); Container contentPane2; // = getContentPane(); public Reservation() { contentPane2 = new JPanel(); //nyt jpanel GridBagLayout gridbag = new GridBagLayout(); GridBagLayout gridbag2 = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); GridBagConstraints c2 = new GridBagConstraints(); contentPane.setLayout(gridbag); contentPane2.setLayout(gridbag2); c.fill = GridBagConstraints.HORIZONTAL; c2.fill = GridBagConstraints.HORIZONTAL; JLabel skriv = new JLabel("Reservations Nr"); c.gridx = 0; c.gridy = 0; gridbag.setConstraints(skriv, c); contentPane2.add(skriv); JLabel skriv2 = new JLabel("Dato Udlej. Start"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 1; gridbag.setConstraints(skriv2, c); contentPane2.add(skriv2); JLabel skriv3 = new JLabel("Dato Udlej. Slut"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 2; gridbag.setConstraints(skriv3, c); contentPane2.add(skriv3); checkInd = new JButton("CheckInd"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 3; gridbag.setConstraints(checkInd, c); contentPane2.add(checkInd); JLabel skriv4 = new JLabel("Gæstnummer"); c.insets = new Insets(30,0,0,0); c.gridx = 0; c.gridy = 4; gridbag.setConstraints(skriv4, c); contentPane2.add(skriv4); skrivNr = new JTextField(10); c.insets = new Insets(0,20,0,0); c.gridx = 1; c.gridy = 0; gridbag.setConstraints(skrivNr, c); contentPane2.add(skrivNr); skrivUdlStart = new JTextField(10); c.insets = new Insets(10,20,0,0); c.gridx = 1; c.gridy = 1; gridbag.setConstraints(skrivUdlStart, c); contentPane2.add(skrivUdlStart); skrivUdlSlut = new JTextField(10); c.insets = new Insets(10,20,0,0); c.gridx = 1; c.gridy = 2; gridbag.setConstraints(skrivUdlSlut, c); contentPane2.add(skrivUdlSlut); checkUd = new JButton("CheckUd"); c.insets = new Insets(10,20,0,0); c.gridx = 1; c.gridy = 3; gridbag.setConstraints(checkUd, c); contentPane2.add(checkUd); gæstNr = new JTextField(10); c.insets = new Insets(30,20,0,0); c.gridx = 1; c.gridy = 4; gridbag.setConstraints(gæstNr, c); contentPane2.add(gæstNr); opret = new JButton("Opret"); c.insets = new Insets(0,250,0,0); c.gridx = 2; c.gridy = 0; gridbag.setConstraints(opret, c); contentPane.add(opret); søg = new JButton("Søg"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 1; gridbag.setConstraints(søg, c); contentPane.add(søg); opdater = new JButton("Opdater"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 2; gridbag.setConstraints(opdater, c); contentPane.add(opdater); opdater.addActionListener(this); slet = new JButton("Slet"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 3; gridbag.setConstraints(slet, c); contentPane.add(slet); nyGæst = new JButton("Ny Gæst"); c.insets = new Insets(20,250,0,0); c.gridx = 2; c.gridy = 4; gridbag.setConstraints(nyGæst, c); contentPane.add(nyGæst); søgGæst = new JButton("Søg Gæst"); c.insets = new Insets(10,250,0,0); c.gridx = 2; c.gridy = 5; gridbag.setConstraints(søgGæst, c); contentPane.add(søgGæst); afslut = new JButton("Afslut"); c.insets = new Insets(20,250,0,0); c.gridx = 2; c.gridy = 6; gridbag.setConstraints(afslut, c); contentPane.add(afslut); gridbag2.setConstraints(contentPane2, c); //constraints er ikke tilrettet... gør det selv. contentPane.add(contentPane2); //tilføj det nye panel til rootpanel (contentpane) addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { if (inAnApplet) { dispose(); } else { System.exit(0); } } }); } public void actionPerformed( ActionEvent e ) { if( e.getSource() == opdater ); { contentPane2.setVisible(false); } } }
Jeg er ikke helt med, hvad er constraints for noget?
Kurser inden for grundlæggende programmering