Toon posts:

[java-applet] Nieuwe GUI in hetzelfde scherm

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een kleine GUI gemaakt. Een loginschermpje. Wanneer je een gebruiker en wachtwoord invoert wordt er gecontroleerd of deze kloppen. Ben je bijv. admin, dan moet je doorverwezen worden naar een adminpagina. Anders een gewone gebruikerspagina.

Goed, deze inlog GUI zit in een file 'StartProgrammaGUI.class'.
Het scherm voor de admin, zit in een file 'AdminGUI.class'.

Het is de bedoeling dat het inlogscherm verwijnt en dat de nieuwe GUI (AdminGUI aGUI = new AdminGUI()) zichtbaar is.

Op dit moment heb ik de boel wel werkend als niet-applet, maar dan verschijnt er gewoon een nieuw scherm (het adminscherm). Hoe krijg ik zoiets in een applet voor elkaar?

Code die misschien makkelijk is:

StartProgrammaGUI:

code:
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
37
38
39
40
41
42
43
44
45
46
47
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class StartProgrammaGUI extends JApplet implements ActionListener
{
    static JButton btnLoginName = new JButton("Login");
    static JTextField txtLoginName = new JTextField();
    static JTextField txtPassWord = new JTextField();
    static StartProgrammaGUI loginScherm;

    public static void main(String[] args)
    {
        StartProgrammaGUI loginScherm = new StartProgrammaGUI();
    }

   public StartProgrammaGUI() 
   {
        JLabel lblLoginName = new JLabel("Login: ");
        JLabel lblPassWord = new JLabel("Password:");

    this.setSize(400, 400);
        this.setVisible(true);
//      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.getContentPane().setLayout(null);  
        getContentPane().add(lblLoginName);
        getContentPane().add(this.txtLoginName);
        getContentPane().add(lblPassWord);
        getContentPane().add(this.txtPassWord);
        this.getContentPane().add(this.btnLoginName);

        this.btnLoginName.addActionListener(this);

        lblLoginName.setBounds(5, 5, 65, 20);
        this.txtLoginName.setBounds(70, 5, 100, 20);
        lblPassWord.setBounds(5, 25, 65, 20);
        this.txtPassWord.setBounds(70, 25, 100, 20);
        this.btnLoginName.setBounds(70, 50, 100, 20);
    }   

    public void actionPerformed(ActionEvent e)
    {
        // Check of de gebruiker bestaat etc...
        AdminGUI aGUI = new AdminGUI();

    }


AdminGUI:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import javax.swing.*;

public class AdminGUI extends JApplet
{
    public AdminGUI()
    {
        this.setSize(400, 400);
        this.setVisible(true);

        JLabel bla = new JLabel("Test!");
        this.getContentPane().setLayout(null);
        this.getContentPane().add(bla);
//      this.getContentPane().repaint();
        bla.setBounds(10, 10, 50, 50);
        //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}


Dus, als het geen applet is werkt het wel (niet extends JApplet, maar extends JFrame), maar zodra het wel een applet is, werkt het niet. Als het geen applet is, wordt er gewoon een nieuw schermpje geopend, maar het is de bedoeling dat het in hetzelfde schermpje gedaan wordt.

Ik heb op tweakers gezocht, op sun, op javaalmanac en op google, maar geen oplossing gevonden.

Verwijderd

Je zou je loginscherm en je adminscherm allebei JPanel kunnen laten extenden. Dan maak je een extra klasse die JApplet extend en die zet als ie de ene JPanel weghaalt de andere er neer.

Verwijderd

Je moet even in de gaten houden dat je in een applet geen nieuwe vensters (of applets, zoals jij doet) kun aanmaken! Je zult dus als het ware je adminscherm over je inlogscherm heen moeten tekenen, dat kan met bijvoorbeeld een JPanel zoals al eerder gezegd werd.

  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 20-08 23:38
Misschien kun je het oplossen met een card layout

http://java.sun.com/j2se/.../java/awt/CardLayout.html

Groetjes