Avatar billede mik28 Seniormester
16. oktober 2004 - 10:42 Der er 13 kommentarer og
1 løsning

Skjule applet

Hej eksperter,

Jeg sidder og arbejder på en applet. Det er meningen at det skal ende ud med noget chat funktionalitet, men så langt er jeg ikke kommet endnu. Ind til videre vil jeg gerne have den til at fungere på en sådan måde at nå man trykker på login, så bliver selve loginvinduet skjult og kun dialogboksen er tilbage. Kan det lade dig gøre. Jeg har prøvet med

        Opret fr = new Opret(JOptionPane.getFrameForComponent(this), true);
            fr.setVisible(true);
pa.setVisible(false);


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;

public class Chat extends JApplet implements ActionListener
{
 
    JLabel bl        = new JLabel("Brugernavn");
    JTextField bt    = new JTextField(10);
    JLabel pl        = new JLabel("Password");
    JTextField pt    = new JTextField(10);
   
    JButton b1 = new JButton("Login");
 
    JPanel pa;
 
    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        b1.addActionListener(this);
       
        pa = new JPanel();
       
        pa.add(bl);
        pa.add(bt);
        pa.add(pl);
        pa.add(pt);
        pa.add(b1);
        pa.setBackground(Color.red);
        setContentPane(pa);
       
    }
       
    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
            Opret fr = new Opret(JOptionPane.getFrameForComponent(this), true);
            fr.setVisible(true); 
        }             
    }
}
Avatar billede mik28 Seniormester
16. oktober 2004 - 10:44 #1
Avatar billede _carsten Nybegynder
17. oktober 2004 - 11:40 #2
Jeg ved faktisk ikke om du kan skjule en applet, men en workaround kunne være at du brugte CardLayout i din applet og så skifte card når der trykkes på login knappen.

Noget a la nedenstående

public class Chat extends JApplet implements ActionListener
{
 
    JLabel bl        = new JLabel("Brugernavn");
    JTextField bt    = new JTextField(10);
    JLabel pl        = new JLabel("Password");
    JTextField pt    = new JTextField(10);
   
    JButton b1 = new JButton("Login");
 
    JPanel pa, fake;
 
    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        b1.addActionListener(this);
       
        pa = new JPanel();
        fake =  new JPanel();
       
        pa.add(bl);
        pa.add(bt);
        pa.add(pl);
        pa.add(pt);
        pa.add(b1);
        pa.setBackground(Color.red);
       
        fake.setBackground(Color.white);
       
        getContentPane().setLayout(new java.awt.CardLayout());

        getContentPane().add(pa, "card1");

        getContentPane().add(fake, "card2");
    }
       
    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.last( getContentPane() );
            Opret fr = new Opret(JOptionPane.getFrameForComponent( this), true);
            fr.setVisible(true);
            cl.first( getContentPane() );
        }             
    }
}
Avatar billede mik28 Seniormester
17. oktober 2004 - 16:37 #3
Det jeg gerne vil opnå er at tingene bliver åbnet i det oprindelige vindue
Avatar billede _carsten Nybegynder
17. oktober 2004 - 16:48 #4
Prøv den her

import java.awt.*;
import java.awt.CardLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;

public class Chat extends JApplet implements ActionListener
{
 
    JLabel bl        = new JLabel("Brugernavn");
    JTextField bt    = new JTextField(10);
    JLabel pl        = new JLabel("Password");
    JTextField pt    = new JTextField(10);
   
    JButton b1 = new JButton("Login");
    JButton b2 = new JButton("Tilbage");
   
    JPanel pa, greenPage;
 
    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        b1.addActionListener(this);
        b2.addActionListener(this);
       
        pa = new JPanel();
        greenPage =  new JPanel();
       
        pa.add(bl);
        pa.add(bt);
        pa.add(pl);
        pa.add(pt);
        pa.add(b1);
       
        pa.setBackground(Color.red);
        greenPage.setBackground(Color.green);
        greenPage.add(b2);
       
        getContentPane().setLayout(new java.awt.CardLayout());

        getContentPane().add(pa, "card1");

        getContentPane().add(greenPage, "card2");
    }
       
    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.last( getContentPane() );
        }
        if (scr==b2)
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.first( getContentPane() );
        }
    }
}
Avatar billede mik28 Seniormester
17. oktober 2004 - 17:09 #5
Det er faktisk sådan jeg gerne vil have det til at virke. Der er bare lige et lille men. Jeg vil jo gerne have de forskellige skærmbilleder delt ud i klasser. Hvordan gør jeg det på en smart måde. Jeg har forsøgt mig med noget i den her stil

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;

class Opret extends JDialog implements ActionListener
{
    JButton b1 = new JButton("Tilbage");
   
    public Opret(Frame frame, boolean modal)
    { 
        super(frame, modal);
       
        setSize(350,350);
        setLocation(400,300);
     
        b1.addActionListener(this);
       
        JPanel pa = new JPanel();
       
        pa.add(b1);
        pa.setBackground(Color.green);
        setContentPane(pa);       
    }
   
        public void actionPerformed(ActionEvent evt)
        {
        Object scr = evt.getSource();
       
        if (scr==b1)
        {
                       
        }
       
    }
}
Avatar billede _carsten Nybegynder
17. oktober 2004 - 17:22 #6
Eksempel


import java.awt.*;
import java.awt.CardLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;

public class Chat extends JApplet implements ActionListener
{
 
    JLabel bl        = new JLabel("Brugernavn");
    JTextField bt    = new JTextField(10);
    JLabel pl        = new JLabel("Password");
    JTextField pt    = new JTextField(10);
   
    JButton b1 = new JButton("Login");
    JButton button;
   
    JPanel pa;
    GreenPage greenPage;
 
    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        pa = new JPanel();
        greenPage =  new GreenPage();
       
        b1.addActionListener(this);
       
        button = greenPage.getJButton();
        button.addActionListener(this);
       
        pa.add(bl);
        pa.add(bt);
        pa.add(pl);
        pa.add(pt);
        pa.add(b1);
       
        pa.setBackground(Color.red);
       
        getContentPane().setLayout(new java.awt.CardLayout());

        getContentPane().add(pa, "card1");

        getContentPane().add(greenPage, "card2");
    }
       
    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.last( getContentPane() );
        }
        if (scr==button)
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.first( getContentPane() );
        }
    }
}





class GreenPage extends JPanel{
    JButton b1 = new JButton("Tilbage");
   
    public GreenPage(){
        setBackground(Color.green);
        add(b1);       
    }
   
    public JButton getJButton(){
        return b1;
    }
}
Avatar billede mik28 Seniormester
17. oktober 2004 - 17:31 #7
Det som jeg gerne vil have er at alt hvad der angår et skærmbillede er beskrevet i sin egen klasse
Avatar billede _carsten Nybegynder
17. oktober 2004 - 17:31 #8
Du jo også tage en refence med over til GreenPage.

Her en lidt anden måde at gøre det på.

    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        pa = new JPanel();
        greenPage =  new GreenPage(this );
       
        b1.addActionListener(this);
       
      // button = greenPage.getJButton();
      // button.addActionListener(this);
       
        pa.add(bl);
        pa.add(bt);
        pa.add(pl);
        pa.add(pt);
        pa.add(b1);
       
        pa.setBackground(Color.red);
       
        getContentPane().setLayout(new java.awt.CardLayout());

        getContentPane().add(pa, "card1");

        getContentPane().add(greenPage, "card2");
    }
       
    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.last( getContentPane() );
        }
        if ( scr == greenPage.getJButton() )
        {
            CardLayout cl = (CardLayout)getContentPane().getLayout();
            cl.first( getContentPane() );
        }
    }
}





class GreenPage extends JPanel{
    JButton b1 = new JButton("Tilbage");
   
    public GreenPage(Chat c){  // Reference til Chat
        setBackground(Color.green);
        b1.addActionListener( c );
        add(b1);       
    }
   
    public JButton getJButton(){
        return b1;
    }
}
Avatar billede mik28 Seniormester
17. oktober 2004 - 17:41 #9
Jeg vil som sagt gerne have tingene beskrevet i klasser for sig selv, sådan at når jeg trykker på knappen bliver der lavet et objekt. Jeg har engang lavet en applikation hvor det virkede således JDialog fr = new Opret(this, "Opret", true);
Avatar billede mik28 Seniormester
17. oktober 2004 - 17:43 #10
Det er min mening at anvende noget gridbag layout på den side hvor chatten engang kommer til at være ( håber jeg :-) )
Avatar billede mik28 Seniormester
17. oktober 2004 - 17:44 #11
Den forhindring jeg skal over er at forstå hvordan jeg navigerer
Avatar billede mik28 Seniormester
17. oktober 2004 - 17:50 #12
Det skulle gerne kunne ses her :-)

http://www.web-oasen.dk:8080/chat2/
Avatar billede _carsten Nybegynder
17. oktober 2004 - 19:14 #13
1. Bruger du JDialog har du minimum 2 vinduer

2. Bruger du CardLayout på din applet, kører det hele i samme vindue
  CardLayout fungerer på samme måde som et spil kort, kun det kort som
  ligger øverst vises, men du kan pille et hvilket som helst kort ud af
  bunken og lægge det øverst

3. Du kan også vælge at lave en menu i din applet, som i en ganske alimindelig
  app. og bruge CardLayout eller måske JInternalFrames

Eksempel på brug af menu i applet

import java.awt.*;
public class NewChat extends javax.swing.JApplet {
   
    public NewChat() {
        initComponents();
        setSize(400,400);
    }
   

    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();

       
        jLabel1.setText("I dette panel skal eventuelt vises en masse knapper");
        jPanel1.add(jLabel1);

        getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);

        jPanel2.setLayout(new java.awt.CardLayout());

        jPanel3.setBackground(new java.awt.Color(0, 102, 255));
        jPanel2.add(jPanel3, "card2");

        jPanel4.setBackground(new java.awt.Color(255, 0, 51));
        jPanel2.add(jPanel4, "card3");

        jPanel5.setBackground(new java.awt.Color(51, 153, 0));
        jPanel2.add(jPanel5, "card4");

        getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);

        jMenu1.setText("Menu");
        jMenuItem1.setText("Vis bl\u00e5t panel");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                action1(evt);
            }
        });

        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Vis r\u00f8dt panel");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                action2(evt);
            }
        });

        jMenu1.add(jMenuItem2);

        jMenuItem3.setText("Vis gr\u00f8nt panel");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                action3(evt);
            }
        });

        jMenu1.add(jMenuItem3);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

    }

    private void action1(java.awt.event.ActionEvent evt) {
        CardLayout cl = (CardLayout)jPanel2.getLayout();
        cl.show(jPanel2, "card2");
    }

    private void action2(java.awt.event.ActionEvent evt) {
        CardLayout cl = (CardLayout)jPanel2.getLayout();
        cl.show(jPanel2, "card3");
    }

    private void action3(java.awt.event.ActionEvent evt) {
        CardLayout cl = (CardLayout)jPanel2.getLayout();
        cl.show(jPanel2, "card4");
    }
   

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;   
}
Avatar billede mik28 Seniormester
18. oktober 2004 - 14:46 #14
Det er vist et cardlayout jeg skal bruge :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester