Avatar billede gonnemand Nybegynder
17. december 2006 - 02:36 Der er 12 kommentarer og
1 løsning

Lukning af program vindue, stopper ikke aktive objekter?

Jeg har lavet et lille afspiller program, med GUI.

Problemet er, at når en fil er i gang med at afspille, og jeg lukker programmet, bliver filen ved med at spille.
Dog fik jeg Quit-knap metoden, til at stoppe afspilningen, ved at kalde afspiller klassens stop metode, med player.stop();

Med dette virker ikke, hvis man lukker programmet ved at trykke på det røde kryds oppe i højre hjørne (standard windows knapperne), som er på alle program vinduer (somregel).

Jeg har ikke selv gjort noget for at knapperne minimer, maksimer og luk knapperne bliver vist oppe i højre hjørne. Mener dog at have set, at man kan fjerne dem... men vil helst beholde dem, pga. almindeligheden i at de er der :-)

Så jeg mangler vel egentlig en form for ActionListener tilknyttet luk knappen. Men da jeg ikke selv har gjort noget for at få de knapper, kan jeg ikke lige finde en løsning til problemet... nogen her inde der kan? :-)
Avatar billede kalp Novice
17. december 2006 - 09:48 #1
Der er en der hedder "on windows closing"
en actionlistener... den burde kunne gøre det hvis du smider koden der i.
det vil sige når din form er ved at lukke så køre den koden deri
Avatar billede kalp Novice
17. december 2006 - 09:49 #2
Avatar billede kalp Novice
17. december 2006 - 09:50 #3
nåh.. den hoppede ikke helt derned... men den hedder

windowClosing(WindowEvent) og ikke windowClosed.. det er for sent
Avatar billede gonnemand Nybegynder
17. december 2006 - 21:45 #4
Super... men det jeg har prøvet, virker desværre ikke.

Jeg har sat følgende:

private void windowClosing(WindowEvent e)
{
  player.stop();
}

Det skal lige siges at det er et afspiller program, og i en Quit() metode,
er koden player.stop() sat, hvilket stopper afspilningen af en fil. Så her virker det jo udemærket... bare ikke med vinduet :-(
Avatar billede gonnemand Nybegynder
17. december 2006 - 22:56 #5
Jeg har også forsøgt mig med følgende kode:

    private void makeFrame()
    {
        frame = new JFrame("SSPlayer");   
        this.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent e) {
                //Do the DoYouWantToSaveLogicHere
            }
            });
    }

Men metoden addWindowListener kan den ikke finde :-( Har prøvet import af forskellige ting... men uden held :-(
Avatar billede kalp Novice
18. december 2006 - 16:34 #6
importere du følgende??
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DinFrame extends JFrame implements ActionListener{

DinFrame(){
super("Test GUI");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {

player.stop();


}
});


}


}
Avatar billede kalp Novice
21. december 2006 - 19:07 #7
???
Avatar billede gonnemand Nybegynder
27. december 2006 - 15:02 #8
Sorry... har haft lidt travlt, og er nu på juleferie. Jeg har fået problemet løst, og poster løsningen et par dage efter nytår. Kan ikke lige huske om kalp's mulige løsning var med til den endelige løsning, men det finde jeg ud af :-) I'll be back
Avatar billede kalp Novice
10. januar 2007 - 21:34 #9
hvad med nu?=)
Avatar billede gonnemand Nybegynder
12. januar 2007 - 22:55 #10
Sorry... havde helt glemt det :-(

Følgende metode/klasse blev sat som det sidste i klassen, der kalder player.stop() som er en metode i SoundEngine klassen, der stopper afspilningen af en fil. Derefter kaldes System.exit(0), der stopper/lukker aktuelle objekt.

class FrameListener extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    { 
        player.stop();
        System.exit(0);
    }
}
Avatar billede gonnemand Nybegynder
12. januar 2007 - 23:09 #11
Hov.. glemte noget...

I private void makeFrame() blev følgende kode sat ind:

frame.addWindowListener(new FrameListener());

frame kommer af, frame = new JFrame("navn på vinduet");

Dette er for at FrameListener (fra forige tråd) virker på den frame der bliver lavet i makeFrame()

Håber det giver mening... ellers spørg :-)
Avatar billede gonnemand Nybegynder
12. januar 2007 - 23:32 #12
Så dit svar guided mig videre til min løsning, kalp :-)
Avatar billede kalp Novice
13. januar 2007 - 10:29 #13
super=) så ligger jeg da et svar:)
godt det blev løst:)
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