Avatar billede seattaken Nybegynder
24. november 2004 - 15:10 Der er 15 kommentarer og
1 løsning

Lukning af en frame

Hej eksperter

Vi har lavet et program i java. Når man trykker på en knap i programmet åbner der sig en anden frame a la en popup. På denne frame kan man gemme eller annullere sin indtastning. Når man vil annulere indtastning så lukkes hele programmet i stedet for den popup. Er der nogen der har en ide til hvordan det kan laves?

Vi har prøvet med System.ext(0); men så er det at den lukker det hele ned.
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:11 #1
System.exit(0);

Skal lukke programmet ned - det er jo det I beder den om..!
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:12 #2
Prøv med:

dispose();
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:14 #3
Min første kommentar var måske lidt kringlet. Det jeg mente var, at System.exit(0); fortæller den virtuelle maskine at hele applikationen skal lukkes ned.
Avatar billede seattaken Nybegynder
24. november 2004 - 15:18 #4
problemet er at når vi skriver System.exit(0) så lukker den ikke kun popup'en ned men hele programmet. Kan dette skyldes at vi kalder popup'en samme sted som visse dele af programmet?

ecilpse sætter en stor fed streg under dispose() når vi prøver at skrive dette
Avatar billede seattaken Nybegynder
24. november 2004 - 15:18 #5
stor fed rød streg :o)
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:19 #6
I skal ikke skrive System.exit(..) medmindre i vil lukke hele programmet!!!

Vi skal nok se lidt kode, der hvor I vil lukke jeres "pop-up"...
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:20 #7
Hvis jeres "pop-up" arver fra JFrame eller JDialog er det:

dispose();

I skal bruge.
Avatar billede seattaken Nybegynder
24. november 2004 - 15:25 #8
ActionListener annullerKnapListener = new ActionListener() {
            public void actionPerformed(ActionEvent e){
                dispose();
                System.out.println("crap!!!!\n- Bailing OUT!!");
               
            }
        };
        JButton annullerKnap = new JButton("Annuller");
        annullerKnap.setBounds(190, 340, 110, 30);

Her kommer lige lidt kode
Avatar billede seattaken Nybegynder
24. november 2004 - 15:26 #9
det forstår den desværre ikke. Den kan ikke genkende dispose(); den sætter en rød streg under det.

Vi har også prøvet det her
ActionListener annullerKnapListener = new ActionListener() {
            public void actionPerformed(ActionEvent e){
                System.exit(0);
                System.out.println("crap!!!!\n- Bailing OUT!!");
               
            }
        };
        JButton annullerKnap = new JButton("Annuller");
        annullerKnap.setBounds(190, 340, 110, 30);
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:30 #10
Det første er det rigtige. Og jeg kan ikke forstå den brokker sig over dispose - medmindre at i IKKE arver fra JFrame eller JDialog.

Vi bliver nok nødt til at se noget mere kode...

Hvis det ikke er en kæmpe klasse, kan I jo bare kopiere hele klassen ind her...
Avatar billede seattaken Nybegynder
24. november 2004 - 15:38 #11
Her kommer den:

package Hjaelpetraener.guiKomponent;

import javax.swing.*;
import javax.swing.border.*;

import sun.java2d.Disposer;

import java.awt.*;
import java.awt.event.*;



//Panel under træning
public class training extends JPanel{
    static String[] menuItems = {"Ã…bn","Gem","Udskriv","Opret øvelse"};


       
    //Constructor
    public training(Dimension contentDimension){
   
           
           
        //Fysiske øvelser
        JPanel warmUp = new JPanel();
            warmUp.setBorder(new TitledBorder(new EtchedBorder(), "Fysisk"));
            JScrollPane f = new JScrollPane();
           
            JLabel firkant = new JLabel(" Firkant ");
            firkant.setTransferHandler(
                    new TransferHandler("text"));
            warmUp.add(firkant);
            firkant.setToolTipText("Øvelsen firkant bestÃ¥r i at gruppen deles op i hold á " +
                    "5 spiller. 5. spiller stilles ind i midten" +
                    " hvorsÃ¥ han skal fÃ¥ fat i bolden");
            firkant.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

            JLabel spmand = new JLabel(" Sprællemand ");
            spmand.setTransferHandler(
                    new TransferHandler("text"));
            warmUp.add(spmand);
           
            JLabel smaaloeb = new JLabel(" SmÃ¥ løb ");
            smaaloeb.setTransferHandler(
                    new TransferHandler("text"));
            warmUp.add(smaaloeb);

            //Fysiske øvelser
        JPanel power = new JPanel();
            power.setBorder(new TitledBorder(new EtchedBorder(), "Fysisk"));
            JScrollPane p = new JScrollPane();
           
            JLabel armh = new JLabel(" Armhævninger ");
            armh.setTransferHandler(
                    new TransferHandler("text"));
            power.add(armh);
           
            JLabel maveb = new JLabel(" Mavebøjninger ");
            maveb.setTransferHandler(
                    new TransferHandler("text"));
            power.add(maveb);

            JLabel ehop = new JLabel(" Engle hop ");
            ehop.setTransferHandler(
                    new TransferHandler("text"));
            power.add(ehop);


        //Konditions øvelser
        JPanel cond = new JPanel();
            cond.setBorder(new TitledBorder(new EtchedBorder(), "Kondition"));
            cond.add(new JScrollPane(new JTextArea("Her stÃ¥r øvelser...", 7, 35)));
       
        //Tekniske øvelser
        JPanel tech = new JPanel();
            tech.setBorder(new TitledBorder(new EtchedBorder(), "Teknik"));
            tech.add(new JScrollPane( new JTextArea("Her stÃ¥r øvelser...", 7, 35)));
           
    //Højre panel
        JPanel Right = new JPanel();
            Right.setLayout(new BoxLayout(Right, BoxLayout.PAGE_AXIS));
            Right.add(warmUp);
            Right.add(power);
            Right.add(cond);
            Right.add(tech);
   
//            Venstre panel           
            JPanel Left = new JPanel();
            Left.setBorder(new TitledBorder(new EtchedBorder(), "Valgte øvelser"));
            Left.setLayout(null);
            Left.setSize(new Dimension(600,400));
           
           
            // Enumeration labels
            JLabel enum1 = new JLabel("1. ");
            enum1.setBounds(11,15,25,30);
            JLabel enum2 = new JLabel("2. ");
            enum2.setBounds(11,40,25,30);
            JLabel enum3 = new JLabel("3. ");
            enum3.setBounds(11,65,25,30);
            JLabel enum4 = new JLabel("4. ");
            enum4.setBounds(11,90,25,30);
            JLabel enum5 = new JLabel("5. ");
            enum5.setBounds(11,115,25,30);
            JLabel enum6 = new JLabel("6. ");
            enum6.setBounds(11,140,25,30);
            JLabel enum7 = new JLabel("7. ");
            enum7.setBounds(11,165,25,30);
            JLabel enum8 = new JLabel("8. ");
            enum8.setBounds(11,190,25,30);
            JLabel enum9 = new JLabel("9. ");
            enum9.setBounds(11,215,25,30);
            JLabel enum10 = new JLabel("10. ");
            enum10.setBounds(5,240,25,30);

            //Transferhandlers
            JLabel oevListe1 = new JLabel("");
                oevListe1.setBounds(25,15,590,30);
                oevListe1.setTransferHandler(
                        new TransferHandler("text"));
                Left.add(enum1);
                Left.add(oevListe1);   
               
                Left.setLayout(null);
                    JLabel oevListe2 = new JLabel(" ");
                    oevListe2.setBounds(25,40,590,30);
                    oevListe2.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum2);
                    Left.add(oevListe2);   
               
                Left.setLayout(null);
                    JLabel oevListe3 = new JLabel(" ");
                    oevListe3.setBounds(25,65,590,30);
                    oevListe3.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum3);
                    Left.add(oevListe3);   
                       
                Left.setLayout(null);
                    JLabel oevListe4 = new JLabel(" ");
                    oevListe4.setBounds(25,90,590,30);
                    oevListe4.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum4);
                    Left.add(oevListe4);
                           
                Left.setLayout(null);
                    JLabel oevListe5 = new JLabel(" ");
                    oevListe5.setBounds(25,115,590,30);
                    oevListe5.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum5);
                    Left.add(oevListe5);   
                                   
                Left.setLayout(null);
                    JLabel oevListe6 = new JLabel(" ");
                    oevListe6.setBounds(25,140,590,30);
                    oevListe6.setTransferHandler(
                            new TransferHandler("text"));
                Left.add(enum6);
                Left.add(oevListe6);   
                                           
                Left.setLayout(null);
                    JLabel oevListe7 = new JLabel(" ");
                    oevListe7.setBounds(25,165,590,30);
                    oevListe7.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum7);
                    Left.add(oevListe7);
                   
                Left.setLayout(null);
                    JLabel oevListe8 = new JLabel(" ");
                    oevListe8.setBounds(25,190,590,30);
                    oevListe8.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum8);
                    Left.add(oevListe8);   
                   
                Left.setLayout(null);
                    JLabel oevListe9 = new JLabel(" ");
                    oevListe9.setBounds(25,215,590,30);
                    oevListe9.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum9);
                    Left.add(oevListe9);   
                       
                    Left.setLayout(null);
                    JLabel oevListe10 = new JLabel(" ");
                    oevListe10.setBounds(25,240,590,30);
                    oevListe10.setTransferHandler(
                            new TransferHandler("text"));
                    Left.add(enum10);
                    Left.add(oevListe10);   
                   
//              Hele panelet
            JPanel content = new JPanel();
            content.setPreferredSize(contentDimension);
                content.setLayout(new GridLayout(1,2));
                content.add(Left);
                content.add(Right);
       
           
            // Mouse listener
            MouseListener listener = new MouseAdapter() {
                  public void mousePressed(MouseEvent e) {
                    JComponent c = (JComponent)e.getSource();
                    TransferHandler th = c.getTransferHandler();
                    th.exportAsDrag(c, e, TransferHandler.COPY);
                  }
            };
                firkant.addMouseListener(listener);
                spmand.addMouseListener(listener);
                smaaloeb.addMouseListener(listener);
                armh.addMouseListener(listener);
                maveb.addMouseListener(listener);
                ehop.addMouseListener(listener);

        add(content);

        oevelsePopUp();

    }
   
   
    public void kaldKnap4(){
        oevelsePopUp();
    }



    public void oevelsePopUp(){
       
        JFrame oevelsePop = new JFrame("Opret øvelse");

        JPanel oevelsePopLeft = new JPanel();
        oevelsePopLeft.setLayout(null);
        oevelsePopLeft.setBorder(new TitledBorder(new EtchedBorder(), "Menu"));
        oevelsePopLeft.setBounds(10, 10, 150, 380);

        JPanel oevelsePopRight = new JPanel();
        oevelsePopRight.setLayout(null);
        oevelsePopRight.setBorder(new TitledBorder(new EtchedBorder(), "Right"));
        oevelsePopRight.setBounds(170, 10, 310, 380);

        //Arrays der angiver hvad der skal være i de
        String[] typeArray = {"Opvarmning", "Fysik", "Teknik", "Kondition"};
        String[] svaerhedsgradArray = {"1 - Meget let", "2 - Let", "3 - Middel", "4 - Svær", "5 - Meget svær"};
        String[] facilitetsArray = {"Fodboldbane", "Motionsrum"};
               
        JTextField oevelseNavn = new JTextField("Navn pÃ¥ øvelsen");
        oevelseNavn.setBounds(10, 20, 130, 30);

        //Laver comboboxen "type" og indsætter elementer
        JComboBox type = new JComboBox(typeArray);
        type.setBounds(10, 60, 130, 30);
       
        //Laver comboboxen "svaerhedsgrad" og indsætter elementer
        JComboBox svaerhedsgrad = new JComboBox(svaerhedsgradArray);
        svaerhedsgrad.setBounds(10, 100, 130, 30);

        //Laver comboboxen "facilitet" og indsætter elementer
        JComboBox facilitet = new JComboBox(facilitetsArray);
        facilitet.setBounds(10, 140, 130, 30);

        JTextField varighed = new JTextField("Varighed pÃ¥ øvelsen...");
        varighed.setBounds(10, 180, 130, 30);

        JTextPane oevelseTextPane = new JTextPane();
        JScrollPane oevelseTxtFelt = new JScrollPane(oevelseTextPane);
        oevelseTxtFelt.setBounds(10, 20, 290, 315);

        JButton gemKnap = new JButton("Gem");
        gemKnap.setBounds(80, 340, 110, 30);

        ActionListener annullerKnapListener = new ActionListener() {
            public void actionPerformed(ActionEvent e){
                System.out.println("crap!!!!\n- Bailing OUT!!");
               
            }
        };
        JButton annullerKnap = new JButton("Annuller");
        annullerKnap.setBounds(190, 340, 110, 30);

        oevelsePopLeft.add(oevelseNavn);
        oevelsePopLeft.add(type);
        oevelsePopLeft.add(svaerhedsgrad);
        oevelsePopLeft.add(facilitet);
        oevelsePopLeft.add(varighed);
        oevelsePopRight.add(oevelseTxtFelt);
        oevelsePopRight.add(gemKnap);
        oevelsePopRight.add(annullerKnap);
        Container cp = oevelsePop.getContentPane();
        cp.add(oevelsePopLeft);
        cp.add(oevelsePopRight);
        cp.setLayout(null);
       
        oevelsePop.setSize(500,440);
        oevelsePop.setVisible(true);
        annullerKnap.addActionListener(annullerKnapListener);
       
    }
}
Avatar billede seattaken Nybegynder
24. november 2004 - 15:39 #12
Det er nede i bunden at vi laver annuler knappen
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:42 #13
ActionListener annullerKnapListener = new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("crap!!!!\n- Bailing OUT!!");
        oevelsePop.dispose();
    }
};

Det er framen i skal dispose og ikke panelet.
Avatar billede seattaken Nybegynder
24. november 2004 - 15:49 #14
Kanon nu virker det - vi manglede lige at lave JFrame til en final
Avatar billede mikkelbm Nybegynder
24. november 2004 - 15:50 #15
Så vil jeg tillade mig at lave et svar :)
Avatar billede seattaken Nybegynder
24. november 2004 - 15:52 #16
Så virker dette skam
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