Program działający jako aplikacja i applet jednocześnie

Odpowiedz Nowy wątek
2012-06-11 20:11

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Zastanawia mnie, czy program w java może być jednocześnie appletem i aplikacją? Na razie mam aplikację. Nie wiem czy polecenie zostało dobrze zrozumiane przeze mnie.

Czy ktoś pomógłby przerobić ten kod? Wydaje mi się, że trzeba dodać extends Applet ale co zrobić z extends JFrame?

Mój kod:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.io.File;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollBar;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class Pro extends JFrame implements ActionListener, AdjustmentListener{

        JMenuItem newItem=new JMenuItem("New"), saveItem=new JMenuItem("Save"), exitItem=new JMenuItem("Exit");
        JMenuItem infoItem=new JMenuItem("O zjawisku"), autorItem=new JMenuItem("O autorach");
        JPanel pright;
        PanelDoRysowania pleft;
        JScrollBar sc1, sc2, sc3, sc4, sc5;
        JLabel e, e1, e2, e3, e4, e5;

        JFreeChart w;
        double d=20;
        double a=1;
        double pi=3.14;
        int N=1;
        double L=100;
        double lambda=380;
        double k=0.01745;
        double xx=0, yy=0;
        double s1=0,s2=0,s3=0,M=0; 
        XYSeries series = new XYSeries("XYGraph");
        JLabel lblChart = new JLabel();
        JFileChooser fc;

        public Pro() throws HeadlessException {

                super();
                setTitle("Dyfrakcja i interferencja");
        setSize(900,600);
        setResizable(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JMenuBar menuBar=new JMenuBar();
        JMenu fileMenu=new JMenu("File"), infoMenu=new JMenu("Info");   
        menuBar.add(fileMenu);
        menuBar.add(infoMenu);
        fileMenu.add(newItem);
        fileMenu.add(saveItem);
        fileMenu.add(exitItem);
        infoMenu.add(infoItem);
        infoMenu.add(autorItem);
        JRootPane root=getRootPane();
        root.setJMenuBar(menuBar);
        setLayout(new BorderLayout());
        pleft=new PanelDoRysowania();
        pright=new JPanel();
        pright=doPanel();
        add(pleft, BorderLayout.WEST);
        add(pright, BorderLayout.EAST);
        pleft.repaint();
                newItem.addActionListener(this);
                saveItem.addActionListener(this);
                exitItem.addActionListener(this);
                infoItem.addActionListener(this);
                autorItem.addActionListener(this);                

                setVisible(true);

        }

        public Pro(GraphicsConfiguration arg0) {
                super(arg0);
                // TODO Auto-generated constructor stub
        }

        public Pro(String arg0) throws HeadlessException {
                super(arg0);
                // TODO Auto-generated constructor stub
        }

        public Pro(String arg0, GraphicsConfiguration arg1) {
                super(arg0, arg1);
                // TODO Auto-generated constructor stub
        }

        @Override
        public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                Object source=e.getSource();
                if(source==newItem){
                        sc1.setValue(380);
                        sc2.setValue(20);
                        sc3.setValue(1);
                        sc4.setValue(1);
                        sc5.setValue(100);
                        series.clear();
                        pleft.repaint();
                        pleft.revalidate();
                }
                if(source==saveItem){
                     // Zapisywanie wykresu do pliku JPG:

                    fc=new JFileChooser();
                    int retVal=fc.showSaveDialog(this);
                    if(retVal==JFileChooser.APPROVE_OPTION) {
                        File file=fc.getSelectedFile();
                        try {
                            ChartUtilities.saveChartAsJPEG(new File(file.getAbsolutePath()), w, 800, 600);

                        }
                        catch (IOException ex) {
                            JOptionPane.showMessageDialog(this, "Błąd.");
                            System.exit(4);
                        }
                    }
                }
                if(source==exitItem){
                        System.exit(0);
                }
                if(source==infoItem){
                        Okno okno = new Okno();
                        okno.setVisible(true);
                }
                if(source==autorItem){
                        JOptionPane.showMessageDialog(this,"Autorki:\n Katarzyna Mazur\n Magdalena Owerko");
                }
        }

        public JPanel doPanel()
    {
                JPanel panel=new JPanel();
                ImageIcon obrazek = new ImageIcon("tecza.jpg");
                panel.setSize(350,600);

                sc1=new JScrollBar(JScrollBar.HORIZONTAL, 380, 10, 380, 770); 
                sc2=new JScrollBar(JScrollBar.HORIZONTAL,20,1,20,41); 
                sc3=new JScrollBar(JScrollBar.HORIZONTAL,1,1,1,11);
                sc4=new JScrollBar(JScrollBar.HORIZONTAL,1,1,1,11); 
                sc5=new JScrollBar(JScrollBar.HORIZONTAL,100,10,100,210);
                sc1.setPreferredSize(new Dimension(300,10));
                sc2.setPreferredSize(new Dimension(300,10));
                sc3.setPreferredSize(new Dimension(300,10));
                sc4.setPreferredSize(new Dimension(300,10));
                sc5.setPreferredSize(new Dimension(300,10));
                sc1.addAdjustmentListener(this);
                sc2.addAdjustmentListener(this);
                sc3.addAdjustmentListener(this);
                sc4.addAdjustmentListener(this);
                sc5.addAdjustmentListener(this);
                e=new JLabel("Opcje:");
                e1=new JLabel("Dlugosc fali: "+sc1.getMinimum()+" [nanometrow]");
                e2=new JLabel("Stala siatki: "+sc2.getMinimum()+" [mikrometrow]");
                e3=new JLabel("Szerokosc szczelin: "+sc3.getMinimum()+" [mikrometrow]");
                e4=new JLabel("Ilosc szczelin: "+sc4.getMinimum());
                e5=new JLabel("Odległosc siatki od ekranu: "+sc5.getMinimum()+" [centymetrow]");

                panel.setLayout(new GridLayout(12,1));        
                panel.add(e);
                JLabel etykieta2 = new JLabel();                
                etykieta2.setIcon(obrazek);
                panel.add(etykieta2);
                panel.add(sc1);
                panel.add(e1);
                panel.add(sc2);
                panel.add(e2);
                panel.add(sc3);
                panel.add(e3);
                panel.add(sc4);
                panel.add(e4);
                panel.add(sc5);
                panel.add(e5);        

                return panel;
    }

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Pro a=new Pro();

        }

        @Override
        public void adjustmentValueChanged(AdjustmentEvent e) {
                // TODO Auto-generated method stub
                int i =e.getValue();
                if(e.getSource()==sc1){
                        e1.setText("Dlugosc fali: "+i+" [nanometrow]");
                        lambda=i;

                        pleft.repaint();
            pleft.revalidate();
                                         }
                if(e.getSource()==sc2){
                        e2.setText("Stala siatki: "+i+" [mikrometrow]");
                        d=i;

                        pleft.repaint();
            pleft.revalidate();
                                }
                if(e.getSource()==sc3){
                        e3.setText("Szerokosc szczelin: "+i+" [mikrometrow]");
                        a=i;

                        pleft.repaint();
            pleft.revalidate();
                }
                if(e.getSource()==sc4){
                        e4.setText("Ilosc szczelin: "+i);
                        N=i;

                        pleft.repaint();
            pleft.revalidate();
                }
                if(e.getSource()==sc5){
                        e5.setText("Odległosc siatki od ekranu: "+i+" [centymetrow]");
                        L=i;

                        pleft.repaint();
            pleft.revalidate();
                }
        }

        class PanelDoRysowania extends JPanel 
        {
                public PanelDoRysowania() 
                {}

                        protected void paintComponent(Graphics g) {
                            super.paintComponent(g);

                            Container cp = getContentPane();
                           series.clear();
                                        for(int m=-200;m<201;m++){
                                            if(m==0){
                                                xx=0;
                                                int n=m-1;
                                                int p=m-2;
                                                double y1, y2;
                                                s1=Math.sin(k*pi*N*n);
                                                s2=Math.sin(k*pi*a*n/d);
                                                s3=Math.sin(k*pi*n);
                                                M=pi*a*n/d;
                                                y1=s1*s1*s2*s2/(M*M*s3*s3); 
                                                s1=Math.sin(k*pi*N*p);
                                                s2=Math.sin(k*pi*a*p/d);
                                                s3=Math.sin(k*pi*p);
                                                M=pi*a*p/d;
                                                y2=s1*s1*s2*s2/(M*M*s3*s3);
                                                yy=y1+(y1-y2)/3;
                                                series.add(xx, yy);
                                            }
                                            else{
                                                xx=m*lambda*L/(100000*d);
                                                s1=Math.sin(k*pi*N*m);
                                                s2=Math.sin(k*pi*a*m/d);
                                                s3=Math.sin(k*pi*m);
                                                M=pi*a*m/d;
                                                yy=s1*s1*s2*s2/(M*M*s3*s3);                                                
                                                series.add(xx, yy); 
                                            } 
                                        }

                                        XYSeriesCollection dataset = new XYSeriesCollection();
                                        dataset.addSeries(series);

                                        w=ChartFactory.createXYLineChart(
                                                "", "", "Natezenie", dataset,
                                                PlotOrientation.VERTICAL, false, false, false);

                                    ChartPanel chartPanel = new ChartPanel(w);
                                        chartPanel.setPreferredSize(new java.awt.Dimension(300, 200));
                                        cp.add(chartPanel);

                        }        

        }
        }
edytowany 1x, ostatnio: pigwabest, 2012-06-11 20:51

Pozostało 580 znaków

2012-06-11 23:15

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Znalezione w sieci o apleto-aplikacjach http://liza.umcs.lublin.pl/~abaran/java/2/2.htm#tth_sEc5 ale nie umiem chyba zmienić w mojego programu. Cały czas coś się wykrzacza. Jest błąd, który wydaje mi się nie do pokonania bez całkowitej zmiany programu. Czepia się

JRootPane root=getRootPane();

oraz Container cp = getContentPane();

To był mój pomysł:
```java
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.io.File;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollBar;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class Pro extends Applet implements ActionListener, AdjustmentListener{

        JMenuItem newItem=new JMenuItem("New"), saveItem=new JMenuItem("Save"), exitItem=new JMenuItem("Exit");
        JMenuItem infoItem=new JMenuItem("O zjawisku"), autorItem=new JMenuItem("O autorach");
        JPanel pright;
        PanelDoRysowania pleft;
        JScrollBar sc1, sc2, sc3, sc4, sc5;
        JLabel e, e1, e2, e3, e4, e5;

        JFreeChart w;
        double d=20;
        double a=1;
        double pi=3.14;
        int N=1;
        double L=100;
        double lambda=380;
        double k=0.01745;
        double xx=0, yy=0;
        double s1=0,s2=0,s3=0,M=0; 
        XYSeries series = new XYSeries("XYGraph");
        JLabel lblChart = new JLabel();
        JFileChooser fc;

        public void init() {
            resize(900,600);

        JMenuBar menuBar=new JMenuBar();
        JMenu fileMenu=new JMenu("File"), infoMenu=new JMenu("Info");   
        menuBar.add(fileMenu);
        menuBar.add(infoMenu);
        fileMenu.add(newItem);
        fileMenu.add(saveItem);
        fileMenu.add(exitItem);
        infoMenu.add(infoItem);
        infoMenu.add(autorItem);
        JRootPane root=getRootPane();
        root.setJMenuBar(menuBar);
        setLayout(new BorderLayout());
        pleft=new PanelDoRysowania();
        pright=new JPanel();
        pright=doPanel();
        add(pleft, BorderLayout.WEST);
        add(pright, BorderLayout.EAST);
        pleft.repaint();
                newItem.addActionListener(this);
                saveItem.addActionListener(this);
                exitItem.addActionListener(this);
                infoItem.addActionListener(this);
                autorItem.addActionListener(this);                

                setVisible(true);

        }

        public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                Object source=e.getSource();
                if(source==newItem){
                        sc1.setValue(380);
                        sc2.setValue(20);
                        sc3.setValue(1);
                        sc4.setValue(1);
                        sc5.setValue(100);
                        series.clear();
                        pleft.repaint();
                        pleft.revalidate();
                }
                if(source==saveItem){
                     // Zapisywanie wykresu do pliku JPG:

                    fc=new JFileChooser();
                    int retVal=fc.showSaveDialog(this);
                    if(retVal==JFileChooser.APPROVE_OPTION) {
                        File file=fc.getSelectedFile();
                        try {
                            ChartUtilities.saveChartAsJPEG(new File(file.getAbsolutePath()), w, 800, 600);

                        }
                        catch (IOException ex) {
                            JOptionPane.showMessageDialog(this, "Błąd.");
                            System.exit(4);
                        }
                    }
                }
                if(source==exitItem){
                        System.exit(0);
                }
                if(source==infoItem){
                        Okno okno = new Okno();
                        okno.setVisible(true);
                }
                if(source==autorItem){
                        JOptionPane.showMessageDialog(this,"Autorki:\n Katarzyna Mazur\n Magdalena Owerko");
                }
        }

        public JPanel doPanel()
    {
                JPanel panel=new JPanel();
                ImageIcon obrazek = new ImageIcon("tecza.jpg");
                panel.setSize(350,600);

                sc1=new JScrollBar(JScrollBar.HORIZONTAL, 380, 10, 380, 770); 
                sc2=new JScrollBar(JScrollBar.HORIZONTAL,20,1,20,41); 
                sc3=new JScrollBar(JScrollBar.HORIZONTAL,1,1,1,11);
                sc4=new JScrollBar(JScrollBar.HORIZONTAL,1,1,1,11); 
                sc5=new JScrollBar(JScrollBar.HORIZONTAL,100,10,100,210);
                sc1.setPreferredSize(new Dimension(300,10));
                sc2.setPreferredSize(new Dimension(300,10));
                sc3.setPreferredSize(new Dimension(300,10));
                sc4.setPreferredSize(new Dimension(300,10));
                sc5.setPreferredSize(new Dimension(300,10));
                sc1.addAdjustmentListener(this);
                sc2.addAdjustmentListener(this);
                sc3.addAdjustmentListener(this);
                sc4.addAdjustmentListener(this);
                sc5.addAdjustmentListener(this);
                e=new JLabel("Opcje:");
                e1=new JLabel("Dlugosc fali: "+sc1.getMinimum()+" [nanometrow]");
                e2=new JLabel("Stala siatki: "+sc2.getMinimum()+" [mikrometrow]");
                e3=new JLabel("Szerokosc szczelin: "+sc3.getMinimum()+" [mikrometrow]");
                e4=new JLabel("Ilosc szczelin: "+sc4.getMinimum());
                e5=new JLabel("Odległosc siatki od ekranu: "+sc5.getMinimum()+" [centymetrow]");

                panel.setLayout(new GridLayout(12,1));        
                panel.add(e);
                JLabel etykieta2 = new JLabel();                
                etykieta2.setIcon(obrazek);
                panel.add(etykieta2);
                panel.add(sc1);
                panel.add(e1);
                panel.add(sc2);
                panel.add(e2);
                panel.add(sc3);
                panel.add(e3);
                panel.add(sc4);
                panel.add(e4);
                panel.add(sc5);
                panel.add(e5);        

                return panel;
    }

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Pro h=new Pro();
                h.init();

                JFrame f = new JFrame("Dyfrakcja i interferencja");
                f.resize(900, 600);

                f.add("Center", h);
                f.show();

        }

        @Override
        public void adjustmentValueChanged(AdjustmentEvent e) {
                // TODO Auto-generated method stub
                int i =e.getValue();
                if(e.getSource()==sc1){
                        e1.setText("Dlugosc fali: "+i+" [nanometrow]");
                        lambda=i;

                        pleft.repaint();
            pleft.revalidate();
                                         }
                if(e.getSource()==sc2){
                        e2.setText("Stala siatki: "+i+" [mikrometrow]");
                        d=i;

                        pleft.repaint();
            pleft.revalidate();
                                }
                if(e.getSource()==sc3){
                        e3.setText("Szerokosc szczelin: "+i+" [mikrometrow]");
                        a=i;

                        pleft.repaint();
            pleft.revalidate();
                }
                if(e.getSource()==sc4){
                        e4.setText("Ilosc szczelin: "+i);
                        N=i;

                        pleft.repaint();
            pleft.revalidate();
                }
                if(e.getSource()==sc5){
                        e5.setText("Odległosc siatki od ekranu: "+i+" [centymetrow]");
                        L=i;

                        pleft.repaint();
            pleft.revalidate();
                }
        }

        class PanelDoRysowania extends JPanel 
        {
                public PanelDoRysowania() 
                {}

                        protected void paintComponent(Graphics g) {
                            super.paintComponent(g);

                            Container cp = getContentPane();
                           series.clear();
                                        for(int m=-200;m<201;m++){
                                            if(m==0){
                                                xx=0;
                                                int n=m-1;
                                                int p=m-2;
                                                double y1, y2;
                                                s1=Math.sin(k*pi*N*n);
                                                s2=Math.sin(k*pi*a*n/d);
                                                s3=Math.sin(k*pi*n);
                                                M=pi*a*n/d;
                                                y1=s1*s1*s2*s2/(M*M*s3*s3); 
                                                s1=Math.sin(k*pi*N*p);
                                                s2=Math.sin(k*pi*a*p/d);
                                                s3=Math.sin(k*pi*p);
                                                M=pi*a*p/d;
                                                y2=s1*s1*s2*s2/(M*M*s3*s3);
                                                yy=y1+(y1-y2)/3;
                                                series.add(xx, yy);
                                            }
                                            else{
                                                xx=m*lambda*L/(100000*d);
                                                s1=Math.sin(k*pi*N*m);
                                                s2=Math.sin(k*pi*a*m/d);
                                                s3=Math.sin(k*pi*m);
                                                M=pi*a*m/d;
                                                yy=s1*s1*s2*s2/(M*M*s3*s3);                                                
                                                series.add(xx, yy); 
                                            } 
                                        }

                                        XYSeriesCollection dataset = new XYSeriesCollection();
                                        dataset.addSeries(series);

                                        w=ChartFactory.createXYLineChart(
                                                "", "", "Natezenie", dataset,
                                                PlotOrientation.VERTICAL, false, false, false);

                                    ChartPanel chartPanel = new ChartPanel(w);
                                        chartPanel.setPreferredSize(new java.awt.Dimension(300, 200));
                                        cp.add(chartPanel);

                        }        

        }
        }

Jakby co dołączone biblioteki to:
itex-1.3.jar
jcommon-0.9.7.jar
jfreechart-0.9.21.jar

Pozostało 580 znaków

2012-06-12 00:15
Moderator

Rejestracja: 11 lat temu

Ostatnio: 1 miesiąc temu

  1. Zmieńcie dwa wiersze
    import java.applet.applet;
    //na
    import javax.swing.JApplet;
    //oraz
    public class Pro extends Applet implements ActionListener, AdjustmentListener{
    //na 
    public class Pro extends JApplet implements ActionListener, AdjustmentListener{
  2. Poczytajcie o podpisywaniu apletów. Niepodpisany aplet nie utworzy obiektu klasy JFileChooser.
  3. Aplet nie może odczytywać plików z dysku lokalnego, zmieńcie sposób odczytywania
    ImageIcon obrazek = new ImageIcon(Pro.class.getResource("tecza.jpg"));
  4. Metoda main jest niedobrze napisana, używa metod, które są obsolete i deprecated. Brakuje też jednej instrukcji.

        public static void main(String[] args) {
                Pro h=new Pro();
                h.init();
    
                JFrame f = new JFrame("Dyfrakcja i interferencja");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                f.setSize(new Dimension(900, 600));
    
                f.add(h,BorderLayout.CENTER);
                f.setVisible(true);
        }
  5. Pomysł by kończyć program gdy nie powiedzie się zapisanie wykresu do pliku jest, delikatnie mówiąc, osobliwy. Prawdę mówiąc, jest głupi i wkurzający użytkownika. Piszecie dokument w Wordzie, program w IDE, ... klikacie przycisk Zapisz, a program wyświetla okienko z napisem "Błąd" i kończy pracę.
  6. Dlaczego nie używacie polskich liter?

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 6x, ostatnio: bogdans, 2012-06-12 07:55

Pozostało 580 znaków

2012-06-12 08:39

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Dzięki wielkie za pomoc po raz enty bogdans.
A liter polskich nie używam, bo błędy wywala na debianie. To pewnie kwestia ustawień, ale nieważne.

edytowany 1x, ostatnio: pigwabest, 2012-06-12 08:40

Pozostało 580 znaków

2012-06-12 09:10
Moderator

Rejestracja: 11 lat temu

Ostatnio: 1 miesiąc temu

0

Wypada zaznaczyć/zaakceptować odpowiedź, która rozwiązała problem.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
No problemo. Zrobiłabym to prędzej czy później. Dzięki za wszelką pomoc raz jeszcze. - pigwabest 2012-06-12 11:10

Pozostało 580 znaków

2012-06-12 20:04
Moderator

Rejestracja: 11 lat temu

Ostatnio: 1 miesiąc temu

1

Rozwiązanie, które stosujesz (tzn. wykonywanie obliczeń w metodzie paintComponent) ma dwie wady:

  • wydajnościowa, obliczenia są wykonywane nie tylko wtedy gdy są konieczne (bo użytkownik przesunął suwak), ale również wtedy gdy są całkowicie niepotrzebne (użytkownik zmienił rozmiar okna),
  • merytoryczna, wykonujesz obliczenia i podmieniasz panel z rysunkiem ale nie odrysowujesz (nie możesz, bowiem wywołanie repaint wytworzyło by nieskończona rekurencję), zatem wykres jest zawsze spóźniony - dotyczy "poprzedniego" położenia suwaków.
    Przemyśl też, czy jeśli uruchamiasz program jako aplet, powinna być w menu możliwość kończenia programu. Zamyka to JVM u użytkownika, nie zamyka strony. Użytkownik nadal widzi stronę, z której zniknął aplet. Aplety przestają tez działać na innych stronach otwartych w tej samej przeglądarce.

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans, 2012-06-13 09:03

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0