Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
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: 12113
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
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Space Pioneer starebbe realizzando un pr...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
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:47.


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