Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-12-2005, 10:39   #1
mircok7
Member
 
Iscritto dal: May 2004
Città: provincia Milano
Messaggi: 105
applet in programma java: come si fa?

Buongiorno a tutti,
sarei grato a chinque mi sappia trovare una soluzione:
vorrei inserire un applet scitto in java in una programma java (non quindi in una pagina html); è possibile?
Ci ho provato, creando un'istanza della classe non mi dà problemi, ma appena gli dico di inizializzarmi tale istanza mi dà problemi di NullPointerException.
mircok7 è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2005, 17:57   #2
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Un'applet è visualizzabile solo tramite web, quindi ti serve un browser, quindi no, non puoi farlo. SORRY
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2005, 21:35   #3
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
un applet è un pannello come tutti gli altri, quindi puoi trattarlo come faresti con un altra istanza di Panel:

mettiamo che l'applet si chiami foopackage.FooApplet:

Codice:
import foopackage.FooApplet;
import javax.swing.*;
import java.awt.*;

public class MyFrame extends JFrame
{
	public MyFrame()
	{
		FooApplet applet = new FooApplet();
		applet.init();
		applet.start();
		setLayout(new BorderLayout());
		getContentPane().add(BorderLayout.CENTER, applet);

		pack();
	}

	public static void main(String args[])
	{
		MyFrame f = new MyFrame();
		f.show();
    }

}

probabilmente dovrai sistemare le dimensioni, perchè quelle quando gira in una pagina web vengono gestite dal browser.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 00:13   #4
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da kingv
un applet è un pannello come tutti gli altri, quindi puoi trattarlo come faresti con un altra istanza di Panel:

mettiamo che l'applet si chiami foopackage.FooApplet:

Codice:
import foopackage.FooApplet;
import javax.swing.*;
import java.awt.*;

public class MyFrame extends JFrame
{
	public MyFrame()
	{
		FooApplet applet = new FooApplet();
		applet.init();
		applet.start();
		setLayout(new BorderLayout());
		getContentPane().add(BorderLayout.CENTER, applet);

		pack();
	}

	public static void main(String args[])
	{
		MyFrame f = new MyFrame();
		f.show();
    }

}

probabilmente dovrai sistemare le dimensioni, perchè quelle quando gira in una pagina web vengono gestite dal browser.
ma come fai a mandarmi sempre in crisi, sai che non ci avevo mai provato????
Uffi, comunque come è bello impoarare, GRAZIE KINGV
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 01:30   #5
mircok7
Member
 
Iscritto dal: May 2004
Città: provincia Milano
Messaggi: 105
uff non mi funziona

bè innanzitutto grazie per la risposta!
penso che il metodo da te usato sia migliore di come avevo provato inutilmente a fare io,
però purtroppo mi dà ancora errore di puntatore nullo (NullPointerException)...
esattamente in 4 punti:
- at java.applet.Applet.getParameter(Applet.java:168) -> return stub.getParameter(name);
- at javaapplication38.RDFGraph.init(RDFGraph.java:324) ->String edges = getParameter("triples");
- at javaapplication38.Main.<init>(Main.java:21) -> applet.init();
- at javaapplication38.Main.main(Main.java:31) ->Main f = new Main();

per caso sai come mai?
grazie comunque........
mircok7 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 10:13   #6
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
posta il codice che vediamo.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 10:36   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da mircok7
- at javaapplication38.RDFGraph.init(RDFGraph.java:324) ->String edges = getParameter("triples");

il problema è qui, come sai esiste la possibilità di passare dei parametri dalla pagina html all'applet e di recuperarli dall'applet con getParameter(String).
Il problema è che non esiste un setParameter, per cui lui si aspetta un parametro passato dall'html che tu non hai maniera di valorizzare.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 13:58   #8
mircok7
Member
 
Iscritto dal: May 2004
Città: provincia Milano
Messaggi: 105
grazie ancora per la risposta!
cmq ok...
quindi questo applet non posso utilizzarlo direttamente in un programma java, ma dovrei metterlo in una pagina html...
se no non c'è qualche modo per passargli sti parametri?
(scusatemi ma come avrete capito non sono molto esperto in java)
comunque l'applet che sto cercando di usare è della sun,
lo metto in allegato....
Allegati
File Type: doc Graph.doc (11.3 KB, 0 visite)
mircok7 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 14:01   #9
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da mircok7
lo metto in allegato....

non ho Word, metteresti un file di testo?
generalmente gli applet di esempio hanno già un main per essere lanciati come applicazioni.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 15:09   #10
mircok7
Member
 
Iscritto dal: May 2004
Città: provincia Milano
Messaggi: 105
guarda purtroppo non ho altri file riguardanti questo applet perchè me lo hanno passato, ma avevo trovato sul sito della sun una pagina in cui c'era proprio tale applet che girava...intanto ti incollo il codice, mentre cerco tale pagina...


import java.util.*;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;


class Node {
double x;
double y;

double dx;
double dy;

boolean fixed;

String lbl;
}


class Edge {
int from;
int to;

double len;
}


class GraphPanel extends Panel
implements Runnable, MouseListener, MouseMotionListener {
Graph graph;
int nnodes;
Node nodes[] = new Node[100];

int nedges;
Edge edges[] = new Edge[200];

Thread relaxer;
boolean stress;
boolean random;

GraphPanel(Graph graph) {
this.graph = graph;
addMouseListener(this);
}

int findNode(String lbl) {
for (int i = 0 ; i < nnodes ; i++) {
if (nodes[i].lbl.equals(lbl)) {
return i;
}
}
return addNode(lbl);
}
int addNode(String lbl) {
Node n = new Node();
n.x = 10 + 380*Math.random();
n.y = 10 + 380*Math.random();
n.lbl = lbl;
nodes[nnodes] = n;
return nnodes++;
}
void addEdge(String from, String to, int len) {
Edge e = new Edge();
e.from = findNode(from);
e.to = findNode(to);
e.len = len;
edges[nedges++] = e;
}

public void run() {
Thread me = Thread.currentThread();
while (relaxer == me) {
relax();
if (random && (Math.random() < 0.03)) {
Node n = nodes[(int)(Math.random() * nnodes)];
if (!n.fixed) {
n.x += 100*Math.random() - 50;
n.y += 100*Math.random() - 50;
}
graph.play(graph.getCodeBase(), "audio/drip.au");
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
break;
}
}
}

synchronized void relax() {
for (int i = 0 ; i < nedges ; i++) {
Edge e = edges[i];
double vx = nodes[e.to].x - nodes[e.from].x;
double vy = nodes[e.to].y - nodes[e.from].y;
double len = Math.sqrt(vx * vx + vy * vy);
len = (len == 0) ? .0001 : len;
double f = (edges[i].len - len) / (len * 3);
double dx = f * vx;
double dy = f * vy;

nodes[e.to].dx += dx;
nodes[e.to].dy += dy;
nodes[e.from].dx += -dx;
nodes[e.from].dy += -dy;
}

for (int i = 0 ; i < nnodes ; i++) {
Node n1 = nodes[i];
double dx = 0;
double dy = 0;

for (int j = 0 ; j < nnodes ; j++) {
if (i == j) {
continue;
}
Node n2 = nodes[j];
double vx = n1.x - n2.x;
double vy = n1.y - n2.y;
double len = vx * vx + vy * vy;
if (len == 0) {
dx += Math.random();
dy += Math.random();
} else if (len < 100*100) {
dx += vx / len;
dy += vy / len;
}
}
double dlen = dx * dx + dy * dy;
if (dlen > 0) {
dlen = Math.sqrt(dlen) / 2;
n1.dx += dx / dlen;
n1.dy += dy / dlen;
}
}

Dimension d = getSize();
for (int i = 0 ; i < nnodes ; i++) {
Node n = nodes[i];
if (!n.fixed) {
n.x += Math.max(-5, Math.min(5, n.dx));
n.y += Math.max(-5, Math.min(5, n.dy));
}
if (n.x < 0) {
n.x = 0;
} else if (n.x > d.width) {
n.x = d.width;
}
if (n.y < 0) {
n.y = 0;
} else if (n.y > d.height) {
n.y = d.height;
}
n.dx /= 2;
n.dy /= 2;
}
repaint();
}

Node pick;
boolean pickfixed;
Image offscreen;
Dimension offscreensize;
Graphics offgraphics;

final Color fixedColor = Color.red;
final Color selectColor = Color.pink;
final Color edgeColor = Color.black;
final Color nodeColor = new Color(250, 220, 100);
final Color stressColor = Color.darkGray;
final Color arcColor1 = Color.black;
final Color arcColor2 = Color.pink;
final Color arcColor3 = Color.red;

public void paintNode(Graphics g, Node n, FontMetrics fm) {
int x = (int)n.x;
int y = (int)n.y;
g.setColor((n == pick) ? selectColor : (n.fixed ? fixedColor : nodeColor));
int w = fm.stringWidth(n.lbl) + 10;
int h = fm.getHeight() + 4;
g.fillRect(x - w/2, y - h / 2, w, h);
g.setColor(Color.black);
g.drawRect(x - w/2, y - h / 2, w-1, h-1);
g.drawString(n.lbl, x - (w-10)/2, (y - (h-4)/2) + fm.getAscent());
}

public synchronized void update(Graphics g) {
Dimension d = getSize();
if ((offscreen == null) || (d.width != offscreensize.width) || (d.height != offscreensize.height)) {
offscreen = createImage(d.width, d.height);
offscreensize = d;
if (offgraphics != null) {
offgraphics.dispose();
}
offgraphics = offscreen.getGraphics();
offgraphics.setFont(getFont());
}

offgraphics.setColor(getBackground());
offgraphics.fillRect(0, 0, d.width, d.height);
for (int i = 0 ; i < nedges ; i++) {
Edge e = edges[i];
int x1 = (int)nodes[e.from].x;
int y1 = (int)nodes[e.from].y;
int x2 = (int)nodes[e.to].x;
int y2 = (int)nodes[e.to].y;
int len = (int)Math.abs(Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) - e.len);
offgraphics.setColor((len < 10) ? arcColor1 : (len < 20 ? arcColor2 : arcColor3)) ;
offgraphics.drawLine(x1, y1, x2, y2);
if (stress) {
String lbl = String.valueOf(len);
offgraphics.setColor(stressColor);
offgraphics.drawString(lbl, x1 + (x2-x1)/2, y1 + (y2-y1)/2);
offgraphics.setColor(edgeColor);
}
}

FontMetrics fm = offgraphics.getFontMetrics();
for (int i = 0 ; i < nnodes ; i++) {
paintNode(offgraphics, nodes[i], fm);
}
g.drawImage(offscreen, 0, 0, null);
}

//1.1 event handling
public void mouseClicked(MouseEvent e) {
}

public void mousePressed(MouseEvent e) {
addMouseMotionListener(this);
double bestdist = Double.MAX_VALUE;
int x = e.getX();
int y = e.getY();
for (int i = 0 ; i < nnodes ; i++) {
Node n = nodes[i];
double dist = (n.x - x) * (n.x - x) + (n.y - y) * (n.y - y);
if (dist < bestdist) {
pick = n;
bestdist = dist;
}
}
pickfixed = pick.fixed;
pick.fixed = true;
pick.x = x;
pick.y = y;
repaint();
e.consume();
}

public void mouseReleased(MouseEvent e) {
removeMouseMotionListener(this);
if (pick != null) {
pick.x = e.getX();
pick.y = e.getY();
pick.fixed = pickfixed;
pick = null;
}
repaint();
e.consume();
}

public void mouseEntered(MouseEvent e) {
}

public void mouseExited(MouseEvent e) {
}

public void mouseDragged(MouseEvent e) {
pick.x = e.getX();
pick.y = e.getY();
repaint();
e.consume();
}

public void mouseMoved(MouseEvent e) {
}

public void start() {
relaxer = new Thread(this);
relaxer.start();
}

public void stop() {
relaxer = null;
}

}


public class Graph extends Applet implements ActionListener, ItemListener {

GraphPanel panel;
Panel controlPanel;

Button scramble = new Button("Scramble");
Button shake = new Button("Shake");
Checkbox stress = new Checkbox("Stress");
Checkbox random = new Checkbox("Random");

public void init() {
setLayout(new BorderLayout());

panel = new GraphPanel(this);
add("Center", panel);
controlPanel = new Panel();
add("South", controlPanel);

controlPanel.add(scramble); scramble.addActionListener(this);
controlPanel.add(shake); shake.addActionListener(this);
controlPanel.add(stress); stress.addItemListener(this);
controlPanel.add(random); random.addItemListener(this);

String edges = getParameter("edges");
for (StringTokenizer t = new StringTokenizer(edges, ",") ; t.hasMoreTokens() ; ) {
String str = t.nextToken();
int i = str.indexOf('-');
if (i > 0) {
int len = 50;
int j = str.indexOf('/');
if (j > 0) {
len = Integer.valueOf(str.substring(j+1)).intValue();
str = str.substring(0, j);
}
panel.addEdge(str.substring(0,i), str.substring(i+1), len);
}
}
Dimension d = getSize();
String center = getParameter("center");
if (center != null){
Node n = panel.nodes[panel.findNode(center)];
n.x = d.width / 2;
n.y = d.height / 2;
n.fixed = true;
}
}

public void destroy() {
remove(panel);
remove(controlPanel);
}

public void start() {
panel.start();
}

public void stop() {
panel.stop();
}

public void actionPerformed(ActionEvent e) {
Object src = e.getSource();

if (src == scramble) {
play(getCodeBase(), "audio/computer.au");
Dimension d = getSize();
for (int i = 0 ; i < panel.nnodes ; i++) {
Node n = panel.nodes[i];
if (!n.fixed) {
n.x = 10 + (d.width-20)*Math.random();
n.y = 10 + (d.height-20)*Math.random();
}
}
return;
}

if (src == shake) {
play(getCodeBase(), "audio/gong.au");
Dimension d = getSize();
for (int i = 0 ; i < panel.nnodes ; i++) {
Node n = panel.nodes[i];
if (!n.fixed) {
n.x += 80*Math.random() - 40;
n.y += 80*Math.random() - 40;
}
}
}

}

public void itemStateChanged(ItemEvent e) {
Object src = e.getSource();
boolean on = e.getStateChange() == ItemEvent.SELECTED;
if (src == stress) panel.stress = on;
else if (src == random) panel.random = on;
}

public String getAppletInfo() {
return "Title: GraphLayout \nAuthor: <unknown>";
}

public String[][] getParameterInfo() {
String[][] info = {
{"edges", "delimited string", "A comma-delimited list of all the edges. It takes the form of 'C-N1,C-N2,C-N3,C-NX,N1-N2/M12,N2-N3/M23,N3-NX/M3X,...' where C is the name of center node (see 'center' parameter) and NX is a node attached to the center node. For the edges connecting nodes to eachother (and not to the center node) you may (optionally) specify a length MXY separated from the edge name by a forward slash."},
{"center", "string", "The name of the center node."}
};
return info;
}

}
mircok7 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 15:49   #11
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Ho modificato aggiungendo un metodo main che ti permette di eseguirlo come applicazione.
Ho sostituito anche i parametri che andavano in errore cablando a codice i valori che usava negli esempi (righe 381 e 397).

dovrebbe funzionare.
Allegati
File Type: txt Graph.txt (12.2 KB, 1 visite)
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 15:56   #12
mircok7
Member
 
Iscritto dal: May 2004
Città: provincia Milano
Messaggi: 105
grazie mille!
gentilissimo!
lo provo subito
(cmq il sito su cui l'ho trovato in funzione è http://www.gg.caltech.edu/~dhl/java/test/graph/graph.html)!
grazie!!
mircok7 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 16:03   #13
mircok7
Member
 
Iscritto dal: May 2004
Città: provincia Milano
Messaggi: 105
Grande funziona benissimo!
grazie!
mircok7 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2005, 16:06   #14
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da mircok7
Grande funziona benissimo!
grazie!
bene
kingv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Al centro della Via Lattea ci potrebbe e...
Elon Musk ora guarda alla Luna: SpaceX p...
La Cina ha lanciato nuovamente lo spazio...
Blue Origin potrebbe realizzare il lande...
Artemis II: il prossimo Wet Dress Rehear...
Il nuovo HONOR 600 sta arrivando e avr&a...
La crisi delle memorie non coinvolger&ag...
Windows domina su Steam, ma molti utenti...
Per non incorrere in nuovi aumenti delle...
Cubi Z AI 8M visto da vicino, un mini-PC...
Datacenter nello Spazio, affascinante ma...
Social e minori, Butti apre al dibattito...
Tutte le offerte Amazon del weekend, sol...
Amazon spinge sull'usato garantito: 10% ...
TikTok rischia una maxi-multa in Europa:...
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: 07:20.


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