In Java een JFrame sluiten voor het volgende JFrame.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo Tweakers,

Mijn vraag:

Hoe sluit je een JFrame en open je het volgende Frame met een druk op de knop?

Relevante software en hardware die ik gebruik:
Ik maak het programma in JCreator.

Mijn main class is :

code: Testvolgendscherm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Testvolgendscherm extends JFrame{
    public static void main(String[] args) {    
        JFrame frame = new Testvolgendscherm();
        frame.setSize(560, 190);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new Paneel ());
        frame.setTitle("Volgenscherm");
        frame.setVisible(true);
    }
}
class Paneel extends JPanel {
    
    JFrame frame;
    JButton volgende;

  public Paneel () {
    
    volgende = new JButton ( "volgend scherm");
    volgende.addActionListener( new VolgendeHandler ());
    
    add ( volgende ); // knop op het volgende JFrame aan te roepen
}

   class VolgendeHandler implements ActionListener {
    public void actionPerformed( ActionEvent e ) {
        frame.dispose();        //verwacht hiermee het JFrame te kunnen sluiten
        new Secondscherm ();    //verwacht hiermee de volgende klasse/JFrame te openen
            
            }
        }
    }


De volgende klasse moet Testvolgendscherm overnemen:

code: Secondscherm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Secondscherm extends JFrame {
    public Secondscherm() {
        
        JFrame frame = new Secondscherm();
        frame.setSize(440, 280);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new Paneel ());
        frame.setTitle("Tweede Scherm");
        frame.setVisible(true);
    }
}

class Paneel extends JPanel {
    
    JButton volgendeSom;
    
    public Paneel () {
        
        volgendeSom = new JButton ( "Volgende som" );
        add ( volgendeSom );
    }
}


Nu weet ik dat met de methode .dispose() een JFrame gesloten kan worden, maar dat gebeurt nu niet en er wordt geen nieuw JFrame gemaakt.

Ik weet dat ik iets verkeerd doe, maar kom er niet uit wat.

Hopelijk kunnen jullie me helpen.
Alvast bedankt.

Alle reacties


Acties:
  • +1 Henk 'm!

  • JJ93
  • Registratie: Maart 2013
  • Laatst online: 16-09 15:46

JJ93

Error 418

De ActionListener moet je toevoegen vanaf je JFrame, dan kun je bij een klik een nieuw JFrame tonen en met de dispose() methode het eerste scherm opruimen en verbergen.

Je Paneel class heeft namelijk geen referentie naar het JFrame waar hij in zit.

Acties:
  • 0 Henk 'm!

  • Timelord
  • Registratie: Juni 2010
  • Laatst online: 24-05 21:25
Ik heb het gewoon opgelost met de hide functie.