PDA

Visualizza la versione completa : [JAVA] Look&Feel e stampe


Alex'87
16-12-2005, 14:47
avrei qualche domandina...

domanda 1: sto sviluppando un applicazione java con le swing ma ho un problemino... provandolo su linux e su windows l'interfaccia del programma diversa. come faccio a fare in modo che l'interfaccia sia la stessa per tutti i S.O.? ho usato setDefaultLookAndFeelDecorated (o Decoration adesso mi sfugge...) ma c solo per JFrame e JDialog! come faccio a cambiare il L&F di bottoni, jliste, pannelli ecc?

domanda 2: ad un certo punto l'applicazione (un programma per fare test a crocette al computer [lo sto sviluppando x il profe di storia e filosofia che vuole farci fare i compiti in classe al pc])dovrebbe raccogliere tutti i dati (le risposte date dall'utente con rispettiva correzione) e stampare (su carta :-> ) il tutto... come posso fare a stampare?? io ho pensato di memorizzare il tutto in una stringa enorme e poi stampare quella... ma come???

grazie 1000e999!!!

unomichisiada
16-12-2005, 15:12
Originariamente inviato da Alex'87
avrei qualche domandina...

domanda 1: sto sviluppando un applicazione java con le swing ma ho un problemino... provandolo su linux e su windows l'interfaccia del programma diversa. come faccio a fare in modo che l'interfaccia sia la stessa per tutti i S.O.? ho usato setDefaultLookAndFeelDecorated (o Decoration adesso mi sfugge...) ma c solo per JFrame e JDialog! come faccio a cambiare il L&F di bottoni, jliste, pannelli ecc?

domanda 2: ad un certo punto l'applicazione (un programma per fare test a crocette al computer [lo sto sviluppando x il profe di storia e filosofia che vuole farci fare i compiti in classe al pc])dovrebbe raccogliere tutti i dati (le risposte date dall'utente con rispettiva correzione) e stampare (su carta :-> ) il tutto... come posso fare a stampare?? io ho pensato di memorizzare il tutto in una stringa enorme e poi stampare quella... ma come???

grazie 1000e999!!!
1)Il metodo setDefaultLookAndFeelDecorated serve a far apparire coem decorazione delle finestre quella del look and feel che hai scelto e non quella del windowmanager in esecuzione.Se vuoi che l'aspetto sia uguale sotto win e linux ti conviene scaricarti un look and feel diverso da quello di sistema o dai classici forniti con la jdk e impostare quello usando anche setDefaultLookAndFeelDecorated in modo che che anche la decorazione sia uguale. Ce ne sono molti gratuiti, dai uno sguardo qua http://www.javootoo.com/

2)Per questo problema ho alcune domande da farti:
-Il programma ha una struttura client/server nel senso che i pc dei tuoi compagni hanno ognuno la parte client del programma installata e questa comunica i dati raccolti ad un'unica parte server del programam installata su un'unico pc? O com' ch hai gestito la cosa?
-I dati raccolti dove vemgono salvati?

Se vuoi fare una cosa carina ti consiglio una libreria di reporting come JFreeReport o JasperReport. In particolare con JFreeReport una volta che gli hai fornito i dati ed il template xml per formattarli hai gratis un'anteprima di stampa, la stampa e l'esportazione in pdf se ti interessa.
Rispondi alle mie domande e poi vediamo

Alex'87
19-12-2005, 21:22
nn me ne intendo di programmazione client-server...+
a questo proposito ho un problemino... se il programma uno x tutti e lo metto in un unica cartella ci sono problemi ? naturalmente x ognuno si creera un proprio file con le proprie risposte...

x il momento pensavo (su consiglio del profe) di mettere una copia del programma in ogni cartella (ognuna col nome di uno studente...) e ognuno fa partire quello che ha nella propria cartella...

x stampare pensavo di salvare tutto in un file di testo appena si preme il pulsante "consegna" (magari imposto il file in sola lettura x evitare che qualcuno lo modifichi nel frattempo) e stampare questo file di testo...
poi bho...... :-)))

grazie cmq!!! ciao

Alex'87
20-12-2005, 10:29
come carico un l&F esterno nel mio pro0gramma?

unomichisiada
20-12-2005, 12:10
Originariamente inviato da Alex'87
nn me ne intendo di programmazione client-server...+
a questo proposito ho un problemino... se il programma uno x tutti e lo metto in un unica cartella ci sono problemi ? naturalmente x ognuno si creera un proprio file con le proprie risposte...

x il momento pensavo (su consiglio del profe) di mettere una copia del programma in ogni cartella (ognuna col nome di uno studente...) e ognuno fa partire quello che ha nella propria cartella...

x stampare pensavo di salvare tutto in un file di testo appena si preme il pulsante "consegna" (magari imposto il file in sola lettura x evitare che qualcuno lo modifichi nel frattempo) e stampare questo file di testo...
poi bho...... :-)))

grazie cmq!!! ciao
Si ho capito!E' una soluzione quella che ti ha consigliato il prof per abbastanza rischiosa, impostare il file in sola lettura non certo il massimo della sicurezza.Se un tuo compagno ha anche una leggera spigliatezza col pc elude subito questa banale protezione.Direi che se proprio vuoi lasciare i dati su un file nella macchina dei tuoi compagni dovresti prendere almeno due preacauzioni per evitare che loro possano concedersi del tempo aggiuntivo per modificare le risposte dopo aver premuto consegna o dopo la scadenza del timer (hai previsto un timer vero..?)
Primo criptare (anche con un algoritmo banale) i dati sul file in modo da far si che essi possano essere modificati solo mediante il tuo programma. Due evitare che il programma una volta premuto consegna possa essere riavviato per modificare quello stesso file (questo non difficile, basta che non includi una funzione di caricamento di file gi esistenti ma ne crei solo di nuovi).

Una soluzione alternativa a queste ma un po pi debole potrebbe essere quella di registrare il tempo di sistema da qualche parte (ignota ai tuoi compagni) al momento della pressione di "consegna" e confrontarla in seguito con l'ora di ultima modifica del file di dati, se non coincidono il compito va annullato perch qualcuno ci ha messo mano.

unomichisiada
20-12-2005, 12:17
Originariamente inviato da Alex'87
come carico un l&F esterno nel mio pro0gramma?
Questo varia leggermente da look and feel a look and feel e ognuno accompagnato da una piccola guida se si varia rispetto allo standard , in generale per per tutti devi scaricare il file .jar ,includerlo nel classpath dell'applicazione (spero tu sappia come si faccia se no chiedi), e usare un codice tipo:


try
{

UIManager.setLookAndFeel("package_del_laf.NomeClasseLAF");

}
catch (UnsupportedLookAndFeelException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}

All'interno della main o in un blocco static

Alex'87
26-12-2005, 12:20
la stampa viene fatta (ho trovato un modo un po banale...) partire appena lo studente clicca su 'Consegna' o appena scade il tempo (che e' il profe a decidere...). Ce' un modo x stampare senza utilizzare un file di appoggio??
oppure... se invece di .txt creo un .xyz stampa lo stesso?

x stampare ho trovato una classe con un m,todo static che dato in ingresso il path stampa il file identificato dal path...

appena riesco carico qui il sorgente... ciao!

unomichisiada
26-12-2005, 18:29
Originariamente inviato da Alex'87
la stampa viene fatta (ho trovato un modo un po banale...) partire appena lo studente clicca su 'Consegna' o appena scade il tempo (che e' il profe a decidere...). Ce' un modo x stampare senza utilizzare un file di appoggio??
oppure... se invece di .txt creo un .xyz stampa lo stesso?

x stampare ho trovato una classe con un m,todo static che dato in ingresso il path stampa il file identificato dal path...

appena riesco carico qui il sorgente... ciao! Bisogna vedere come fatta la classe di stampa.Comunque certo si pu anche non passare per un file, dipende da come imposti le cose. Quindi se ho capito bene risolvi i problemi di sicurezza stampandando su carta un report direttamente allo scadere del timer o alla pressione di "consegna". Si un abuona soluzione!

Alex'87
27-12-2005, 11:05
per il programma di test sono abbastanza a posto...
adesso sto sviluppando (l'avevo gia' iniziato pero') un programma da dare al profe con cui puo' preparare il file con le domande del test da far caricare all'altro programma...
funziona in questo modo:

nella cartella con il programma c'e' una cartella (Archivio) che contiene delle sotto-cartelle (gli argomenti delle domande...)
il contenuto (filtrato per i file .dom (me lo sono inventato io...)) di Archivio e' mostrato in un JTree. da questo albero dell'archivio si selezionano le domande da inserire nel compito corrente (l'elenco delle domande del test corrente sono in una JList)

problema: c un modo per ottenere, data il nome di una certa sotto-cartella, il nodo che la rappresenta nel programma??? non ho mai usato JTree prima d'ora e devo dire che (a mio parere) veramente difficile... ciao!

Alex'87
27-12-2005, 11:13
un'altra cosa... in un JButton ho messo del testo utilizzando dei tag html e altri no cosi:

JButton b1 = new JButton("<html><center>Sopra
Sotto</center></html>");
JButton b2 = new JButton("stringa");

le stringhe di questi due bottoni si vedranno allo stesso modo su tutti i sistemi (cio se saranno della stessa dimensione, stesso carattere ecc...) oppure no?
lo chiedo xk in una vecchia verrsione di java (1.3 credo...) il tsto tra tag html di default aveva un font diverrso da quello senza html.. grazie!

Loading