Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-04-2007, 09:52   #1
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
[Java]Convertire Applet in Applicazione

Ciao a tutti!
Come da titolo, avrei bisogno di convertire una applet in una applicazione; ho letto che devo creare un jframe che funga da contenitore, e copiare dentro il metodo 'init' del frame il contenuto dell'init dell'applet, ed inserire (sempre nel frame) gli altri metodi presenti nell'applet......Ma non funziona!

questo è il codice dell'applet da convertire in applicazione:
Quote:
import java.applet.Applet;
import java.awt.*;

public class BellmanFord extends Applet
{

public BellmanFord()
{
graphcanvas = new GraphCanvas(this);
options = new Options(this);
documentation = new Documentation(this);
routeTable = new RouteTable();
}

public void init()
{
setLayout(new BorderLayout(10, 10));
add("Center", graphcanvas);
add("North", documentation);
add("East", options);
add("South", routeTable);
}

public Insets insets()
{
return new Insets(10, 10, 10, 10);
}

public void lock()
{
graphcanvas.lock();
options.lock();
}

public void unlock()
{
graphcanvas.unlock();
options.unlock();
}

GraphCanvas graphcanvas;
Options options;
Documentation documentation;
RouteTable routeTable;
}
Questo è il codice del frame(in grassetto le parti che ho aggiunto):
Quote:

public class JFrame extends javax.swing.JFrame {

/** Creates new form JFrame */
public JFrame() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);

add("Center", graphcanvas);
add("North", documentation);
add("East", options);
add("South", routeTable);


pack();

}// </editor-fold>//GEN-END:initComponents

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JFrame().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
GraphCanvas graphcanvas;
Options options;
Documentation documentation;
RouteTable routeTable;

}
Qualcuno saprebbe indicarmi cosa aggiungere/modificare??

Ultima modifica di Voltron : 27-04-2007 alle 09:58.
Voltron è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:04   #2
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
non vorrei deire una cavolata..
ma le Applet usano AWT, mentre il JFrame è un componente di swing...
hai provato ad usare un Frame anzichè un JFrame?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:10   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Voltron Guarda i messaggi
Come da titolo, avrei bisogno di convertire una applet in una applicazione; ho letto che devo creare un jframe che funga da contenitore, e copiare dentro il metodo 'init' del frame il contenuto dell'init dell'applet, ed inserire (sempre nel frame) gli altri metodi presenti nell'applet......Ma non funziona!
Guarda, il concetto sarebbe molto semplice: estendere Frame/JFrame piuttosto che Applet/JApplet.
La questione comunque è anche un'altra: la tua applet usa Swing oppure AWT?? Visto che estende Applet, io deduco AWT. Dal tuo codice poi non è possibile capire cosa sono GraphCanvas, RouteTable, ecc....

Una cosa del genere (codice non testato!):
Codice:
import java.awt.*;

public class BellmanFord extends Frame
{
    private GraphCanvas graphcanvas;
    private Options options;
    private Documentation documentation;
    private RouteTable routeTable;

    public BellmanFord ()
    {
        super ("Un titolo");
        setSize (300, 300);

        graphcanvas = new GraphCanvas(this);
        options = new Options(this);
        documentation = new Documentation(this);
        routeTable = new RouteTable();

        setLayout(new BorderLayout(10, 10));
        add("Center", graphcanvas);
        add("North", documentation);
        add("East", options);
        add("South", routeTable);
    }

    /* ...il resto... */

    public static void main (String[] args)
    {
        BellmanFord frame = new BellmanFord ();
        frame.setVisible (true);
    }
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:10   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Prendi la classe BellmanFord e:

1. aggiungi agli import:

import javax.swing.*;

2. cambia

extends Applet

in

extends JFrame

3. nel costruttore aggiungi come ultima riga:

init();

E qui hai fatto. Ora aggiungi al progetto una classe Main, così:

Codice:
//package se c'è
import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Main().start();
            }
        });
    }

    private void start() {
        BellmanFord window = new BellmanFord();
        window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        window.pack();
        window.setVisible(true);
    
}
E, se non m'è sfuggito qualcosa, dovresti aver trasformato l'applet in applicazione stand-alone.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:11   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
L'ho già detta quella del pulsantone con la scritta "hey, qualcuno ha già risposto...", vero? :
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:28   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
L'ho già detta quella del pulsantone con la scritta "hey, qualcuno ha già risposto...", vero? :
Sì ma non ti preoccupare .... come diceva il famoso spot: du risposte is megl che uan
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:33   #7
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
Grazie a tutti!

Innanzitutto vi linko il sito dove ho prelevato l'applet che simula l'algoritmo di BellmanFord(magari può essere utile anche ad altri studenti):

http://www.laynetworks.com/Simulatio...0Algorithm.htm

quì troverete(mi riferisco soprattutto ad andbin che chiedeva informazioni su GraphCanvas, ecc.) gli altri files di cui è composta l'applet che non ho postato poichè molto lunghi.

Comunque ritengo che l'applet usi awt.

Ultima modifica di Voltron : 27-04-2007 alle 11:38.
Voltron è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:34   #8
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
Ora provo a testare il codice fornito da andbin....
Voltron è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 11:50   #9
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
Allora, ho compilato ed esguito il seguente codice(quello gentilmente fornito da andbin a cui ho aggiunto i metodi mancanti):

Quote:
import java.awt.*;

public class BellmanFord extends Frame
{
private GraphCanvas graphcanvas;
private Options options;
private Documentation documentation;
private RouteTable routeTable;

public BellmanFord ()
{
super ("Un titolo");
setSize (300, 300);

graphcanvas = new GraphCanvas(this);
options = new Options(this);
documentation = new Documentation(this);
routeTable = new RouteTable();

setLayout(new BorderLayout(10, 10));
add("Center", graphcanvas);
add("North", documentation);
add("East", options);
add("South", routeTable);
}

public Insets insets()
{
return new Insets(10, 10, 10, 10);
}

public void lock()
{
graphcanvas.lock();
options.lock();
}

public void unlock()
{
graphcanvas.unlock();
options.unlock();
}

public static void main (String[] args)
{
BellmanFord frame = new BellmanFord ();
frame.setVisible (true);
}
}
Il frame parte correttamente e mi consente di creare il mio grafo e di impostare tutte le opzioni; il problema è che tale frame è composto da 4 pulsanti('clear', 'run', 'step', 'reset') che non funzionano......sto cercando di capire in quale classe vengono creati e perchè non "fungano"!
Voltron è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 12:07   #10
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
Ho risolto il problema del mancato funzionamento dei pulsanti precedentemente menzionati rendendo 'pubblici' e non 'privati' i campi istanza della classe BellmanFord. Ora l'unico problema è riuscire a visualizzare correttamente la textarea che mostra ad ogni iterazione dell'algoritmo dei messaggi utili all'utente.

ecco uno screenshot che mostra il problema di visualizzazione: http://img143.imageshack.us/my.php?image=algomq4.jpg
Voltron è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 17:02   #11
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
Qualche "anima pia" .....è in grado di dirmi cosa modificare(penso nelle impostazioni del border-layout) al fine di evitare che il pannello 'Documentation' collocato a 'North' del frame non venga coperto dalla barra del frame??

screenshot esemplificativo del problema: http://img143.imageshack.us/my.php?image=algomq4.jpg

questo è il listato della classe frame:
Quote:
import java.awt.*;

public class BellmanFord extends Frame
{
GraphCanvas graphcanvas;
Options options;
Documentation documentation;
RouteTable routeTable;

public BellmanFord ()
{
super ("BellmanFord");
setSize (300, 300);

graphcanvas = new GraphCanvas(this);
options = new Options(this);
documentation = new Documentation(this);
routeTable = new RouteTable();

setLayout(new BorderLayout(10, 10));
add("Center", graphcanvas);
add("North", documentation);
add("East", options);
add("South", routeTable);
pack();
}

public Insets insets()
{
return new Insets(10, 10, 10, 10);
}

public void lock()
{
graphcanvas.lock();
options.lock();
}

public void unlock()
{
graphcanvas.unlock();
options.unlock();
}

public static void main (String[] args)
{
BellmanFord frame = new BellmanFord ();
frame.setVisible (true);
}
}
qualora dovesse servire, ecco la classe 'Documentation' che genera il pannello collogato a 'north' del frame principale e che và a finire sotto alla barra perimetrale del frame stesso:

Quote:
import java.awt.*;

class Documentation extends Panel
{

Documentation(BellmanFord bellmanford)
{
doctext = new DocText();
grandparent = bellmanford;
docopt = new DocOptions(this, grandparent);
setLayout(new BorderLayout(10, 10));
add("West", docopt);
add("Center", doctext);

}

BellmanFord grandparent;
DocOptions docopt;
DocText doctext;
}
Un grazie anticiato a chiunque avrà la cortesia di aiutarmi ancora.

Ultima modifica di Voltron : 27-04-2007 alle 17:07.
Voltron è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 17:39   #12
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
1. Prova a togliere il metodo insets() da BellmanFord
2. Non usare AWT .
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2007, 21:12   #13
Voltron
Senior Member
 
Iscritto dal: May 2004
Messaggi: 727
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
1. Prova a togliere il metodo insets() da BellmanFord
2. Non usare AWT .
Ti ringrazio! Ora è sparito il difetto.

ps: in merito al discorso awt.....bè, quello è stato usato da chi ha creato l'applet originaria.
Voltron è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
Alcuni Galaxy S26 utilizzeranno il chip ...
Amazon, ecco i super sconti del weekend:...
Scovare un bug di sicurezza sui disposit...
Offerta Amazon su NordVPN: proteggi 10 d...
ECOVACS DEEBOT X8 PRO OMNI in offerta su...
Scope elettriche Tineco in offerta su Am...
Offerta Amazon sui robot EUREKA J15 Ultr...
Chrome disattiverà automaticament...
Tornano tutti e 4 i colori disponibili p...
Super sconto su iPhone 16: Amazon abbass...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v