PDA

View Full Version : [Java] File e Bottoni nelle Applet.


wacko
09-06-2005, 10:53
Non sono un gran porgrammatore (Comincio cn questa premessa :D ) e mi servivano delle dritte xkè volevo fare una applet ke visualizzasse in modo carino il mio percorso di esami di stato.

Ho dua problemi x ora:
1) Non so come dare le coordinate ai bottoni per sistemarli come voglio io nell' applet.
2) Poi mi servirebbe una veloce spiegazione di come posso far visualizzare un testo (Messo magari su un file .txt) nell'applet.

Grazie.

slowguitar
09-06-2005, 12:11
ciao wacko,
ti premetto che non sono un "espertone" :D pero' con java ci ho smanettato per passione,
per i bottoni ti conviene metterli in un Panel da aggiungere all' applet(o JPanel se vuoi usare le swing)
e settarne il layout

per il layout puoi impostarne diversi: BorderLayout("ragiona" in nord sud ovest est e centro) ,GridLayout(dove indichi numero righe e colonne e gli oggetti vengono sistemati appunto in questa griglia) ), quello "null" dove specifichi le coordinate e grandezza per ogni singolo componente object.setBounds(x,y,w,h)
di default i container (come il Panel) usano il FlowLayout che mette i componenti uno dietro l'altro (tipo in serie)
ti converrebbe dare un'occhiata alle api della sun perche c'e' ne sono molti e diversi http://java.sun.com/reference/api/index.html

poi al Panel con il metodo add(object) li "metti su" (questo genericamente poi ci sono variazioni in base al layout)
in base al layout vengono posizionati

per il testo potresti usare una text area non modificabile volendo....pero' mi sembra che per motivi di sicurezza le applet non facciano usare il package io di java.....non ricordo onestamente

sono a lavoro se mi ricordo ti posto il codice di qualche applet domani.

spero di averti dato qualche indicazione utile....

wacko
09-06-2005, 16:14
Grazie mille adesso vedo di smanettarci un pò anche xkè panel nn ne abbiamo fatti :D .

Qualcuno sà dirmi come mai questo programma nn mi funza ?

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

public class Percorso extends Applet implements ActionListener{

Font titolo = new Font("TimesRoman", Font.PLAIN, 18);

String nomeMateria = " ";
String materiaScelta = " ";

Label lbMateria = new Label("Inserisci il nome della materia da visualizzare: ");
Label lbScelto = new Label(materiaScelta, Label.CENTER);
TextField tfMateria = new TextField(" ",20);
Button bt = new Button(" Ok ");

public void init() {

setBackground(Color.PINK);

add(lbScelto);
add(lbMateria);
add(tfMateria);
add(bt);

}

public void paint(Graphics g){

g.setColor(Color.BLUE);
g.setFont(titolo);
g.drawString(materiaScelta, 400, 300);

}

public void actionPerformed(ActionEvent e) {

nomeMateria=(tfMateria.getText());

if(nomeMateria.equals("Matematica")){
materiaScelta="Matematica";
repaint();
}
if(nomeMateria.equals("Fisica")){
materiaScelta="Fisica";
repaint();
}
if(nomeMateria.equals("Italiano")){
materiaScelta="Italiano";
repaint();
}
if(nomeMateria.equals("Chimica")){
materiaScelta="Chimica";
repaint();
}
if(nomeMateria.equals("Biologia")){
materiaScelta="Biologia";
repaint();
}
if(nomeMateria.equals("Scienze della Terra")){
materiaScelta="Scienze della Terra";
repaint();
}
if(nomeMateria.equals("Inglese")){
materiaScelta="Matematica";
repaint();
}
if(nomeMateria.equals("Informatica")){
materiaScelta="Informatica";
repaint();
}
if(nomeMateria.equals("Filosofia")){
materiaScelta="Filosofia";
repaint();
}
if(nomeMateria.equals("Storia")){
materiaScelta="Storia";
repaint();
}
if(nomeMateria.equals("Ed. Fisica")){
materiaScelta="Ed. Fisica";
repaint();
}

}
}

Ovviamente è incompleto.

slowguitar
09-06-2005, 17:32
prova con

lbScelto.setVisible(true)
lbMateria.setVisible(true)
tfMateria.setVisible(true)

dovrebbero vedersi

slowguitar
10-06-2005, 08:50
dai un'occhiata a questo

import java.applet.*;
import java.awt.*;
public class Applet1 extends Applet
{

public void init(){

Button bw=new Button("work");

// setto il layout
setLayout(new BorderLayout());

// il bottone bw al centro
add(bw,BorderLayout.CENTER);

// creo 1 pannello con il suo layout e dei bottoni
Panel p=new Panel (new FlowLayout());
p.setBackground(Color.red);
Button b1=new Button("opt1");
Button b2=new Button("opt2");
Button b3=new Button("opt3");
// incollo i bottoni sul pannello
p.add(b1);
p.add(b2);
p.add(b3);
// incollo il pannello sul frame con questo layout
add(p,BorderLayout.NORTH);

}
}

wacko
10-06-2005, 09:29
Grazie ragazzi mitici. :D
Xò slow con frame cosa intendi. Xkè io devo farlo su una applet.

Qualcuno ha idea ke problema può esserci nel controllo ? Ho fatto delle prove e credo ke siano gli if a difettare.

Grazie ancora.

wacko
10-06-2005, 09:57
Slow il tuo programma mi da Applet not Inited :Prrr:
Cmq ho capito come posso integrarlo nel mio grazie mille.
Sai se esiste un modo x posizionare il bottone proprio nella coordinata dove vuoi tu ?

slowguitar
10-06-2005, 10:24
eh gia'....l'ho riciclato da un vecchio Frame anzichè un'applet cmq come hai visto è lo stesso :p

slowguitar
10-06-2005, 10:35
dai il setLayout(null)
e poi il setBounds(x,y,w,h) per ogni oggetto
e magari anche il setVisible(true) che non fa mai male!

wacko
10-06-2005, 16:27
dai il setLayout(null)
e poi il setBounds(x,y,w,h) per ogni oggetto
e magari anche il setVisible(true) che non fa mai male!


Quindi se l'oggetto si chiama bt ad esempio faccio bt.setBound(Coordinate ke voglio) giusto ?
Meraviglioso :D

Un'altra info: come faccio a fa rcambaire carattere alla scritta di un solo panel o di un sl bottone ad esempio ?

slowguitar
10-06-2005, 17:20
esatto:

bt.setBounds( int x, int y, int larghezza, int altezza);

oppure:
bt.setSize(int larghezza, int altezza);
bt.setLocation(int x, int y);

( sempre mettendo setLayout(null) )

per il font dovrebbero essere sempre il
setFont( new Font(String nome, int stile, int grandezza) ).....
credo

wacko
10-06-2005, 20:36
Si certo si usa setFont xò imposta tutta la applet in quel modo.

Non capisco come posso assegnare un font sl ad un pannello ad esempio, e soprattutto come posso assegnare un colore ai caratteri di un solo campo.

Nellì init() infatti nn mi fa usare il setColor :what:

wacko
11-06-2005, 16:44
Mi servirebbe qualke altra dritta:

Come faccio a far comparire un'altra pagina html o magari un frame quando viene cliccato un button ?

E poi come faccio a prendere il contenuto di un file di testo e farlo visualizzare nell'applet ? Il mio problema principale è usare il file.

Grazie.

wacko
12-06-2005, 13:55
Uppete

slowguitar
13-06-2005, 07:19
per la pagina prova cosi' (onestamente non ci ho mai provato)

getAccessibleContext().showDocument(new URL("www.chissasefunziona.com"));

per il font io da arrangione farei piu' Panel ed ad ognuno farei un setFont.

slowguitar
13-06-2005, 07:22
per il file una volta ho provato a leggere e modificare un file, ero su un server free (lo spazio che ti danno gratis quando apri una mail), domani ti porto il codice..

wacko
13-06-2005, 12:00
:ave: :ave:

Asd tnx mille, sei il mio salvatore :D
Praticamente ti uso come guida online :Prrr:

slowguitar
14-06-2005, 07:28
ho provato ieri sera a casa per il discorso del file, ho un errore di accesso negato per "Permission" pero' penso di aver capito come fare(a meno che non è valido il discorso della sicurezza come ti scrivevo in precedenza)....ti faccio sapere, anche perche' interessa anche a me questo discorso :)

wacko
14-06-2005, 13:43
Ok ti ringrazio. In effetti sto fatto dei file è interessante, io lo sapevo fare in C++ ma è diverso di sicuro.

Per quel fatto di aprire un altra finestra nn funza. Ho provato a cambiare anche qualcosa usando il libro di testo ma nn funza in nessun modo. Cmq ho abbandonato l'idea far aprire un latra pagina :cool:

wacko
15-06-2005, 20:25
Up

slowguitar
17-06-2005, 10:10
eila',
ho provato a casa dopo un po' tentativi e funziona (anche la visualizzazione di un altro URL) metti sotto la cartella dell'applet un file di testo "prova.txt"

argon10
17-06-2005, 13:29
Se il file di cui parli non si trova necessariamente sul server che ospita l'applet devi fare in modo che questa abbia i diritti per accedere al filesystem.
E' necessario firmare l'applet utilzzando il comando jarsigner.


http://it.groups.yahoo.com/group/Design_Patterns_it/

wacko
17-06-2005, 22:37
Ok. tnx ancora ragazzi. :D
Così dovrei aver finito......Peccato ancora non sia sicuro su che percorso fare :Prrr:

wacko
18-06-2005, 12:48
Ragazzi ancora problemi :(

// Area di testo e gestione file
BufferedReader lettore;
URL myTextURL;
TextArea argomenti = new TextArea(30, 1);

// Stringhe
String indirizzo = new String();
String inizio = new String();



public void actionPerformed(ActionEvent e){

String scrivi = new String();
String controllo = e.getActionCommand();

if(controllo.equals("Matematica")){
indirizzo="Testi/Matematica.txt";
try {
myTextURL = new URL(getCodeBase (), indirizzo);
} catch(MalformedURLException i){}

try{
URLConnection conn; //oggetto per la connessione
conn = myTextURL.openConnection(); //aggancio l'url da connettere
conn.connect(); //apro connessione
lettore = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while( (scrivi = lettore.readLine()) !=null ){
argomenti.append( scrivi+"\n" );
}
lettore.close();
} catch(IOException ioe){}
repaint();
}


Questo è l'action perfomed e sopra ci sn le cose dichiarate in precendenza.
Qual' è il problema ?
Ovviamente ho dichiarato anche la casella di testo e tutto l'occorrente.

Non mi scrive nulla quando clicco.

wacko
19-06-2005, 11:54
Slow ho provato ad usare anche altri reader.... Può essere ke sulle applet funziona solo come hai fatto tu ? Cmq vedi se capisci ual è il problema, sto diventando pazzo..... Tnx

slowguitar
20-06-2005, 10:51
ciao wacko, come diceva giustamente argon10 c'e' quel discorso,
pero' nel tuo caso se c'e' una cartella sotto la stessa cartella del class dell'applet credo non dovresti avere problemi,
la console java (attivala in caso) che errore ti riporta? :confused:

slowguitar
20-06-2005, 11:51
una cosa.... indirizzo="Testi/Matematica.txt"; lo accetta / come carattere?
non andrebbe usato il carattere di escape // ?
prova a sostituirlo, non vorrei che non ti trova il file perche' vuole il doppio //

slowguitar
21-06-2005, 08:46
ola' wacko,
ho detto una cavolata lo accetta ugualmente,
posta il codice completo dell'applet.....

wacko
21-06-2005, 11:46
Mi dava altri errori mi pare ke nn accettava qualke comando.... Azzo mi pare ke l'ho cancellato il codice vekkio. Magari ci riprovo e ti fo sapere, magari lo posto se continua a dare problemi. Tnx ancora :)

wacko
11-07-2005, 17:00
Scusa Slow nn mi sn fatto + sentire. Il fatto è ke ho abbandonato, cioè alla fine l'applet l'ho fatta ke visualizzava una immagine anzichè un testo preso da file.

Cmq ti devo ringraziare ancora perchè mi è venuto davvero carino quel programma. Il prof. mi ha fatto i complimenti :D

slowguitar
27-07-2005, 10:31
ciao wacko son tornato ieri dalle ferie!!
grazie a te perche' cosi' ho guardato anch'io quel discorso delle applet e del file di testo, (poi tral'altro c'e' anche il discorso della firma di cui accennava argon che è interessante)

bye bye :)