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;
public Reservation() {
Container contentPane = getContentPane(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); contentPane.setLayout(gridbag);
Du kan få et vindue frem ved at kalde toFront metoden (JFrame etc). Hvis det er en knap i en frame der skal bringe en anden frame frem skal den første frame nok have registreret den anden, evt. via konstruktoren.
Jo da. Se ovenfor. Du kan ændre din konstruktor til private final JFrame f; Reservation( JFrame f ) { this.f = f; //som i din kode ovenfor opdatere.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent ae) { f.toFront(); } } ); } det skulle gøre det.
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; private final JFrame f;
public Reservation( final JFrame f ) {
this.f = f;
Container contentPane = getContentPane(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); contentPane.setLayout(gridbag);
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"); opdater.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { f.toFront(); } }); 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 ); {
}
}
public static void main(String args[]) { JFrame f = new JFrame( "Dette er en ekstra frame" ); f.setSize( 400, 400 ); f.setVisible( true ); Reservation window = new Reservation( f ); window.inAnApplet = false;
Ok det virker på den måde at der kommer en tom JFrame op, men hva skal jeg gøre for at lave den tomme f om til en fil jeg har der hedder OpretGaest.java ?
Du indsætter bare opretGuest som er af type OpretGuest i stedet for f som jeg helt vilkårligt smed ind. JFrame f = new OpretGuest(); f.setSize( 400, 400 ); // eller hvad ved jeg f.setVisible( true ); Reservation window = new Reservation( f );
public class OpretGaest extends JFrame implements ActionListener { boolean inAnApplet = true; final boolean shouldFill = true; final boolean shouldWeightX = true; JButton opret,søg,opdater,afslut; JTextField gæstNr,forNavn,efterNavn,adresse,telefon,idNr,firma,cvr,rabat; JComboBox IDtype; String betalingsFormer[] = {"Dankort","Kontant","Regning"}; JRadioButton privatGæst,erhvervsGæst;
public OpretGaest() {
Container contentPane = getContentPane(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); contentPane.setLayout(gridbag);
c.fill = GridBagConstraints.HORIZONTAL;
JLabel skriv = new JLabel("Gæste Nr"); c.insets = new Insets(0,0,0,0); c.gridx = 0; c.gridy = 0; gridbag.setConstraints(skriv, c); contentPane.add(skriv);
JLabel skriv2 = new JLabel("Fornavn"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 1; gridbag.setConstraints(skriv2, c); contentPane.add(skriv2);
JLabel skriv3 = new JLabel("Efternavn"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 2; gridbag.setConstraints(skriv3, c); contentPane.add(skriv3);
JLabel skriv4 = new JLabel("Adresse"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 3; gridbag.setConstraints(skriv4, c); contentPane.add(skriv4);
JLabel skriv5 = new JLabel("Telefon"); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 4; gridbag.setConstraints(skriv5, c); contentPane.add(skriv5);
privatGæst = new JRadioButton(); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 5; gridbag.setConstraints(privatGæst, c); contentPane.add(privatGæst);
erhvervsGæst = new JRadioButton(); c.insets = new Insets(10,0,0,0); c.gridx = 0; c.gridy = 6; gridbag.setConstraints(erhvervsGæst, c); contentPane.add(erhvervsGæst);
JLabel skriv8 = new JLabel("ID Nummer"); c.insets = new Insets(10,0,0,0);
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; JFrame f = new OpretGaest();
public Reservation( final JFrame f ) {
this.f = f;
Container contentPane = getContentPane(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); contentPane.setLayout(gridbag);
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"); opdater.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { f.toFront(); } }); 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 ); {
}
}
public static void main(String args[]) { JFrame f = new JFrame( "Dette er en ekstra frame" ); f.setSize( 640, 480 ); f.setVisible( true ); Reservation window = new Reservation( f ); window.inAnApplet = false;
Din OpretGaest har en main() rutine, der sørger for at initialisere din JFrame. Den bliver bare aldrig kaldt, når du instantierer klassen fra et andet objekt. Flyt setVisible og setSize over i constructoren, så virker det!
Hvorfor tager din constructor en JFrame som parameter? Hvorfor lader du denne JFrame overskrive din instansvariabel f, som du lige forinden har gjort en new OpretGaest() på? Din tomme "Dette er en ekstra frame" erstatter din OpretGaest, som derfor aldrig viser sig.
Jo jeg har fået opret gæst til at vise sig nu men der kommer en tom frame op oxo som du siger? Hvordan får jeg den væk og en anden ting er at de nye Jframes der kommer frem sidder ikke fast på første frem men er løse?
Din main() i Reservation kalder setVisible på den tomme frame.
Du er vist ved at have fået svar på dit oprindelige spørgsmål, er du ikke? Der er sikkert mange der gerne vil svare på dit næste spørgsmål, så du bør oprette det som et nyt spørgsmål. Jeg kan afsløre at det har noget med dialog eller ikke dialog at gøre. (JDialog)
Faktisk synes jeg ikke jeg har fået det jeg startede med at spørge om, for jeg spurgte om (eller mente ihvertfald) Jframes jeg kunne skifte rundt imellem ligesom links i html og indtil nu har jeg fået løse JFrames der popper op?
aslan man kan godt skifte mellem JFrames dettte kan gøres ved at sætte setVisible(true) på den Frame du se og setVisible(false) på den Frame du ikke vil se. Det kan sq nok ikke gøres på så mange andre måder... Håber du går godt med jeres Hotel Lazy projekt.. ;o)
Det er iorden jepset ikke noget vi gider at diskutere over... Hvis jeg åbner et nyt spørgsmål har du tid til at hjælpe mig? Jeg skal bruge denne JFrame i min projekt som brugergrænseflade!
public FrontEnd() { db = new ConnectDB( "jdbc:interbase://localhost/C:/Documents and Settings/aslan/Skrivebord/ConnectDB/hotellazy.gdb", "sysdba", "masterkey" );
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; JFrame f = new OpretGaest(); Reservation window = new Reservation();
public Reservation() {
Container contentPane = getContentPane(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); contentPane.setLayout(gridbag);
når du har brugt dette objekt færdigt så skal du sætte objektets ref = null så det kan fjernes. Hvordan skal det virke? Du har et vindue hvor du kalder alle de andre fra?? du kan også bare få den til at lave en System.exit(0);
if( e.getSource() == opdater ); { window.setVisible(false); f.setVisible(true); f.dispose(); //System.exit(0); //har ikke lige prøvet det men tror da det virker. Hvad ønsker du der vil ske når man trykker på opdater?
Af en eller anden grund når jeg kører programmet så bliver f ved med at køre uendeligt? Og det kan jeg ikke forstå? Når man trykker skal der bare komme en anden Jframe op men af en eller anden grund er det meget svært?
Her er hvad jeg har gjort i et program der skal åbne et andet JFrame
if(o == netsend) { nv = new NetsendVindue(); nv.setVisible(true); }
i det vindue der kommer fra tilføjer man bare til WindowListener så det kan lukkes igen.
Her lukker jeg det vindue jeg har åbnet:
if(o == afslut) { setVisible(false); dispose(); }
ikke så meget mere
Synes godt om
Ny brugerNybegynder
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.