Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [SWING]JApplet

    ciao a tutti
    avrei bisogno ancora del vostro aiuto (pardon)
    in pratica devo trasformare il mio client in un applet in modo che il main di cui è fornito deve permettere di far funzionare il mio Conto Corrente Bancario come una applicazione java con gui.
    ora mi domando... devo creare per ogni frame ke io avevo fatto un japplet?? oppure è possibile rikiamare da questo applet con main ke si kiama CCAppletClient nell'int() il costruttore del frame principale dell'applicazione (ke a me è FrameChooseOption)?
    questo applet poi deve essere inserito in una pagina web
    help pleaseeeeee
    itz urgent
    grazie ancora

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se n'è già parlato altre volte: la trasformazione tra applicazione stand-alone e (j)applet non è sempre un processo immediato, la maggior parte delle volte per vie di accessi a risorse a cui, normalmente, un applet non può accedere (per motivi di sicurezza).

    La cosa che generalmente resta identica è invece proprio la parte grafica. Non serve assolutamente creare una japplet per ogni frame/finestra della tua applicazione, in quanto japplet può benissimo utilizzare altri container (tipo window, jframe e jpanel).
    La prima modifica che devi fare è modificare la tua classe principale in modo che estenda JApplet. Le applet a parte il metodo init() possono benissimo avere costruttori e pure metodo main (personalmente lo metto sempre, così se qualcuno dovesse provare ad aprire l'applet da shell posso mandare un messaggio d'avviso dicendo appunto che si tratta di applet e che va eseguita in browser o appletviewer)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    si questo lo sapevo
    però secondo il diagramma delle classi la mia applicazione deve funzionare sia come gui sia come applet
    quindi son costretta a fare il corrispettivo japplet per ogni jframe creato
    il problema è che... come faccio a rikiamare più applet? ovvero io quando scelgo un azione deve apparire un nuovo applet
    io ho fatto in questo modo cioè che mi crea ogni volta una nuova finestra in cui inserire l'applet solo che se faccio setVisible(false) l'applet non è più visibile ma la vekkia finestra si e non so come distruggerla visto ke sono finestre create localmente a meno ke non esista un altro modo ke mi eviti di creare tante finestre per inserirvi il nuovo applet
    come faccio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    mi sa che non capito molto di quel che ho detto oppure hai progettato proprio male l'applicazione in finestre

    Lanciare una nuova applet per ogni finestra della tua applicazione è l'equivalente stand-alone di aprire una nuova finestra di DOS e lanciare un "java nomeFrame" per ogni finestra... ora io non voglio proprio pensare né credere che se hai un'applicazione con 20 dialogs, 100 voci di menu e qualche dozzina di tabs il tuo utente debba lanciare millemila istanze di millemila classi... sarei più propenso a credere che dalla classe principale della tua applicazione tu sia in grado di istanziare tutte le finestre di cui la tua applicazione ha bisogno.

    Tornando a noi, prendi la classe principale, falle estendere JApplet e comincia da lì.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    hehheeh veramente le dialog sono più di 20
    e in pratica
    quando apro la mia pagina web mi deve uscire l'applet principale contenente un combo con la lista delle operazioni da fare ke sono circa una 15 ogni operazione richiama uno o più applet ora come faccio a far rikiamare le varie applet?
    io in pratica nella init del client ke funge da applet ho rikiamato la applet principale contenente il combo box solo ke non me la visualizza forse sbaglio qualcosa?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    perché quelle altre cose che tu vorresti aprire come applet... non devi farle applet, ma devi farle JFrame che istanzi dall'unica applet... altrimenti se stai dicendo che hai 20 applicazioni diverse e vuoi farne 20 applet + 1 da "manager", crei 20 pagine con 20 applet e nell'applet manager recuperi l' AppletContext e carichi il documento html con l'applet x scelta tramite showDocument
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    uhm... sai ke non lo sapevo? io credevo ke dovevo rifare la pagina e aggiungervi l'applet ecco perkè vi kiedevo se non ci fosse un altro modo
    e come si dovrebbe fare esattamente?
    cioè alla fine ho il mio client che funge da applet e questo rikiama il mio frame principale contenente il combo box? giusto?
    cioè come verrebbe?
    abbiate pazienza perkè è la prima volta ke le faccio ste cose :berto:

  8. #8
    io ho fatto così
    codice:
    /**
     * 
     */
    package gccbClient;
    
    import gccb.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    
    /**
     * @(#)FrameAccredito.java
     *
     *
     * @author Raffaella Rotunno
     * @version 1.00 2007/4/24
     */
    
    public class CCAppletClient extends JApplet {
    
    	public static final int PORT = 6502;
    
    	InetAddress addr = null;
    	Socket socket = null;
    	String serverName = null;
    
    	public void init() {
    		
    		try {
    			serverName = this.getParameter("server");
    		} catch (NullPointerException exc) {
    			System.out.println("Using localhost as server");
    		}
    
    		try {
    			addr = InetAddress.getByName(serverName);
    		} catch (UnknownHostException exc) {
    			status.setText("ERRORE: Host sconosciuto, " +
    			       "impossibile continuare");
    		}
    		
    
    		FrameChooseOption f = new FrameChooseOption();
    		
    				try {
    					socket = new Socket(addr, PORT);
    					BufferedReader in = new BufferedReader(
    						new InputStreamReader(
    						socket.getInputStream()));
    					PrintWriter out = new PrintWriter(
    						new BufferedWriter(
    						new OutputStreamWriter(
    						socket.getOutputStream())),true);
    
    				
    				} catch (ConnectException exc) {
    					status.setText("ERRORE: Server non attivo/Connessione "+
    								"rifiutata");
    				} catch (IOException exc) {
    					status.setText("Errore di I/O");
    				} finally {
    					try {socket.close();}
    					catch (IOException exc) {}
    					catch (NullPointerException exc) {}
    				}
    			
    	}
    	
    	public static void main(String[] args) {
    		JApplet applet = new CCAppletClient();
    		JFrame frame = new JFrame("Conto Corrente - Applet Client");
    		
    		// Gestisce l'evento di chiusura
    		frame.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    		
    		frame.getContentPane().add(applet);
    		frame.setSize(300,110);
    		applet.init();
    		applet.start();
    		frame.setVisible(true);
    	}
    }
    solo ke il form giustamente non è all'interno della pagina ma i vari frami escono come finestre separate dalla pagina web
    se io volessi invece incorporarla nella pagina web come dovrei fare?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Che cos'è FrameChooseOption? Estende JPanel? JFrame? Altro?
    Ti posto un esempio un po' più semplice, vedi se ti è d'aiuto:

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    /**
     *
     * @author Andrea
     */
    class MyPanel extends JPanel implements ActionListener {
        
        private JButton button;
        private JTextField textfield;
        private int counter = 0;
        
        public void actionPerformed(ActionEvent ae) {
            textfield.setText("You pressed the button "+(++counter)+" times");
        }
        
        public MyPanel(String text) {
            super();
            this.setLayout(new GridLayout(2,1));
            button = new JButton(text);
            button.addActionListener(this);
            textfield = new JTextField();
            this.add(button);
            this.add(textfield);       
            
        }
                
    }
    public class MainApplet extends JApplet {
        
        /** Creates a new instance of MainApplet */
        public MainApplet() {
        }
        
        public void init() {
            MyPanel p = new MyPanel("From JApplet init()");
            this.add(p);
        }
        
        public static void main (String[] args) {
            JFrame frame = new JFrame();
            frame.setSize(400,400);
            MyPanel p = new MyPanel("From JApplet main()");
            frame.getContentPane().add(p);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
    }
    Aggiungici un file html del tipo
    codice:
    <html>
      <body>
        <applet code="MainApplet" width="400" height="400"></applet>
      </body>
    </html>
    e prova a lanciare da browser e da shell.

    Poi venendo alla tua questione: bhè, se hai le varie classi che aprono altri JFrame, man mano che le istanzi, salteranno fuori dal browser... non c'è altro. Se volevi un comportamento diverso avresti dovuto fare estendere JPanel ed andare a sostituire il contenuto del JFrame principale (o della JApplet nel caso di applet) con il contenuto della nuova classe.

    Tralasciando il resto delle magagne (violaioni di sicurezza che ti costringeranno a dotare l'applet di una firma digitale, visto che apri socket e leggi e scrivi su risorse che potrebbero benissimo essere esterne al mondo a cui un'applet può di norma accedere)...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    estende un JFrame
    cmq mi va bene anke così anke se non è incorporata nella pagina ma spunta dalla pagina va bene lo stesso grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.