Pratele potrebuji male vysvetleni funkce nejspis vlaken udalosti ve swingu.

Mam aplikaci, ktera je tvorena ramcem okna tvorejim instanci JFrame.
Z toho spustim v aplikaci dalsi okno .
A pri jeho zavreni se zavre i hlavi aplikace.

Jak to udelat, aby mi hlavni aplikace zustala zavrena.
Konkretne:

Z aplikace spustim vytvoreni reportu do souboru PDF s pomoci JasperReport a 
iText. Ten chci zobrazit JasperReportu pomoci JasperViewer. 

class HlavniOkno extends JFrame
{
            Connection connection;
            String jasper_file = new String();
            jasper_file = dir + "/sestava.jasper" ;
..............
             JasperPrint file = JasperFillManager
                .fillReport(jasper_file,map,connection);

            // parametr pro predani JasperReportu pri vatvareni sestavy
            Map map = new HashMap();
            map.put("klic_grp",klic_grp);

vytvorim soubor
.............

                JasperViewer prohlizec;

                prohlizec = new JasperViewer(file);

                prohlizec.setSize(800,600);
                prohlizec.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                prohlizec.setVisible( true);

     --- main()
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                    JFrame frame = new JFrame("Test");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setSize(1000, 700);
                    frame.setVisible(true);
          }
    }
}

... toto uvadi literatura jasperu, ze se takto spusti prohlizec.

prepsal jsem tak, ze jsem do tridy

class ViewerPDF implements Runnable
{

    private JasperPrint file = null;
    public ViewerPDF(JasperPrint f)
    {
        file = f;        
    }

    public void run()
    {
            JasperViewer prohlizec;
            prohlizec = new JasperViewer(file);

            prohlizec.setSize(800,600);
            prohlizec.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            prohlizec.setVisible( true);
    }
}

spusteni :

            ViewerPDF show = new ViewerPDF( tisk);
            show.run();


pri uzavreni okna jasperu se oboji chova stejne, ze pri uzavreni okna  spusteji 
run se zavre vse, i okno HlavniOkno. Myslil jsem si asi naivne, ze se pri run 
vyvori nove vlako.
Prepsal jsem to do tridy             extends Thread  implements Runnable     , 
ale stale se mi zavira i hlavni okno.
Predpokladam, ze je to obecny problem interakce a predani udalosti o uzavreni 
do rodicovskoho JFrame. Proc se preda udalost pro zavreni okna i do HlavniOkno
Pouzivam J2SE sun verze 1.6 a jsem na windows2000 

Muzete mi poradit, v cem je problem a jak to prepsat?

Diky vrele :)!

Arne

Odpovedet emailem