|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
[JAVA] dove è possibile scaricare i packages ? tipo java.awt javax.swing ?
Ciao a tutti !!
![]() Il mio problema sarebbe quello di creare una piccola interfaccia grafica molto semplice direi...per rendere più carino un piccolo programma già esistente. Volevo sapere dove e come poter trovare e scaricare i package adatti da utilizzare ( tipo javax.swing e java.awt mi pare di capire..ho letto un po in giro...) perchè sono in possesso solo di package di base e di input ed output!! ![]() Pensate si possa realizzare oppure mi addentro in cose troppo complicate ? ![]() spero una risposta... grazie molte anticipatamente!! |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() java.awt c'è praticamente da sempre, javax.swing è un pacchetto di estensione per le swing e mi sembra che faccia parte di "default" del J2SE a partire dal Java 1.2 (o giù di lì, non mi ricordo di preciso). Quindi se hai una delle ultime major release di Java come la 1.4 o 1.5, hai già tutto quello che ti serve!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
però...
ho capito...però quando inizio il programma ed importo il package :
import java.awt.* ( per esempio ) mi dice che non lo riconosce !!! come mai ??? forse non necessario importare ??? infatti per imput ed output uso un package dal nome GraphicIO ( console grafica di imput output contenuta nella cartella che ho impostato nelle variabili) però la importo capito cosa intendo ?? ( scusami la poca precisione ma non sono proprio espertissimo....) esempio : import GraphicIO.*; ?????? public class NOME{ public static void main (String []args){ GraphicConsole.showWindow(); int Nx, Ny, NT, TF, TI, Tmax,Tstampa; .......... come devo fare per invocare le classi che mi interessano del package java.awt per costruire la parte grafica che mi interessa produrre ?? perdona l'ignoranza naturalmente !! ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Intanto dovresti specificare quale versione di java stai usando. Dal prompt dei comandi prova a dare: java -version Almeno così iniziamo a capire su cosa stai lavorando! Quote:
Ma ripeto, non so cosa sia e come funzioni.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 28-03-2006 alle 08:37. |
||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
ok !!
1) Allora come versione di java sto usando la jdk 1.4.1
2) mentre per quanto riguarda il GraphicIO, hai capito perfettamente, è un package custom per l'IO abbellito graficamente !!! però non è certamente lui il problema..perchè le sue funzioni le conosco ed il programma che ho impostato gira !! La mia intenzione ripeto è quella di creare un abbellimento grafico !! Con la jdk 1.4.1 come si fa ad utilizzare quindi i package grafici di cui abbiamo parlato ?? rinnovo il grazie per l'interesse che mi stai dimostrando e per le risposte pazienti !! ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Prova a creare un sorgente FrameTest.java con il seguente codice e a compilarlo (javac FrameTest.java).
Codice:
import java.awt.*; import javax.swing.*; public class FrameTest extends JFrame { public FrameTest () { super ("Frame Test"); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); setSize (300, 300); } public static void main (String[] args) { FrameTest f = new FrameTest (); f.setVisible (true); } }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
perfetto...
si!! perfetto ---> finestra vuota !!! dimensioni 300X300 !! OK !!
sicuramente ( 100% ) sbagliavo io ![]() ![]() cmq...ora viene il bello ( anzi il brutto !! ![]() leggerò un po di manuali su JAVA ![]() ![]() |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
Per gli altri, GraophicIO è un pachage creato dai docenti universitari per fare operazioni di input e putput senza ausilio di console, e vi dico che è fatto abbastanza male, non gestisce eccezzioni e non ha nemmeno lo scroller laterale, anzi, magari adesso lo hannop anche migliorato, ma nn sò. Come libri ti consiglio horstman tecniche avanzate oppure....mmm...ma non l'0hai seguito il corso di laboratorio??? vabbè che non fanno niente, però i concetti base li danno. in rete, e anche su questo forum, trovi thinking in java, che non parla di grafica ma dato che è free è molto utile.per il resto guide onkline
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
vedremo i frutti....
Quote:
guarda...fondamenti l'ho fatta ![]() ![]() ![]() Le mie conoscenze di programmazione in tutta sincerità non mi permettono di giudicare approfonditamente il package GraphicIO anche se le cose che fai notare sono verissime ( le eccezioni non sono gestite etc etc...) Cmq ho scaricato qualcosa da leggere....vediamo che frutti darà !?? ![]() ![]() naturalmente...se qualcuno vuole inserire il suo consiglio...ripeto, è sempre ben accetto e rigrazio chiunque mostri interesse !! ![]() byez !!! |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
se hai problemi posta sul orum che ti aiutiamo
![]()
__________________
My gaming placement |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
AWT....sembra quasi arabo !!!
Allora...carissimi...ho studiato un po....
![]() ecco di seguito dove mi sono fermato perchè mi sono imabattuto su alcune cose che sinceramente non riesco a gestire ![]() 1) come si assegna un input in una texfield ?? (in parole povere...se la creo poi durante il runtime si può scrivere dentro e premendo un bottone appositamente costruito fare in modo che il valore numerico che ho scritto possa essere preso come input ??? ) ![]() 2) è possibile istanziare questi componenti GUI con una iterazione?? in modo che si creino di conseguenza a fine calcolo ??? ![]() quindi...partendo dal fatto che ho il mio bel programmino che dopo un while ed una serie di for mi restituisce i valori desiderati Mi costruisco la mia GUI ok?? procedo così sfruttando la AWT almeno per come ho letto documentandomi e studiando su alcuni libri : import java.awt.*; import java.awt.event.*; public class PiastraGUI extends Frame { //COSTRUTTORE BUTTONS, LABELS E TEXTFIELDS Label lx=new Label("Larghezza"); Label ly=new Label("Lunghezza"); Label nodix=new Label("Numero Nodi Larghezza"); Label nodiy=new Label("Numero Nodi Lunghezza"); Label kterm=new Label("Conduttività Termica"); Label ro=new Label("Densità"); Label calspec=new Label("Calore Specifico"); Label sctermconvett=new Label("Coeff.Scambio Termico Conv"); Label temppiastra=new Label("Temperatura"); Label tempfluido=new Label("Temperatura Fluido"); Label passointegr=new Label("Passo"); Label timemax=new Label("Tempo Max"); Label timestamp=new Label("STEP Stampa"); TextField txtlx=new TextField(); TextField txtly=new TextField(); TextField txtnodix=new TextField(); TextField txtnodiy=new TextField(); TextField txtkterm=new TextField(); TextField txtro=new TextField(); TextField txtcalspec=new TextField(); TextField txtsctermconvett=new TextField(); TextField txttemppiastra=new TextField(); TextField txttempfluido=new TextField(); TextField txtpassointegr=new TextField(); TextField txttimemax=new TextField(); TextField txttimestamp=new TextField(); TextField t1=new TextField(); TextField t2=new TextField(); TextField t3=new TextField(); TextField t4=new TextField(); TextField t5=new TextField(); <---- queste le ho create io ma il mio intento è quello che le crei il programma nella sua iterazione con il for incluso nel while complessivo!! TextField t6=new TextField(); TextField t7=new TextField(); TextField t8=new TextField(); TextField t9=new TextField(); Button termina=new Button("Termina Interfaccia Grafica"); Button avvia=new Button("Avvia Simulazione con codice di Calcolo"); public PiastraGUI() { setTitle("ANALISI FENOMENO"); termina.addActionListener(new Ascoltami()); Panel p1=new Panel(new GridLayout(13,2)); p1.add(lx);p1.add(txtlx); p1.add(ly);p1.add(txtly); p1.add(nodix);p1.add(txtnodix); p1.add(nodiy);p1.add(txtnodiy); p1.add(kterm);p1.add(txtkterm); p1.add(ro);p1.add(txtro); p1.add(calspec);p1.add(txtcalspec); p1.add(sctermconvett);p1.add(txtsctermconvett); p1.add(temppiastra);p1.add(txttemppiastra); p1.add(tempfluido);p1.add(txttempfluido); p1.add(passointegr);p1.add(txtpassointegr); p1.add(timemax);p1.add(txttimemax); p1.add(timestamp);p1.add(txttimestamp); Panel p2=new Panel(new GridLayout(3,3)); <---in questo caso ho assegnato io la diemensione della griglia ma vorrei che provenisse da un input!! come si fa ??? sempre per il solito discorso che tali dimensioni provengono da calcolo e dai dati inziali di input!!! p2.add(t1); p2.add(t2); p2.add(t3); p2.add(t4); p2.add(t5); <-------- io voglio fare in modo che questi valori non siano assegnati da me ma che le textfield(o label è indifferente in qst caso visto non sono cose che si modificano ma sono valori di stampa a conclusione del calcolo!!) vengano create e riempite con il valore dopo l'esecuzione del for che conclude con la stampa dei valori se non uso la GUI e quindi con il system.out.print !!! E poi quello che non ho capito bene come faccio ad assegnare un evento al button di calcolo in modo tale che nelle text del panel1 dove vengono immessi i dati per il calcolo questo evento possa prendere come input i dati che scrivo nelle textfield (naturlamente in runtime) e proceda assegnadogli ad ognuno il valore della variabile istanziata nel programma base!???? p2.add(t6); p2.add(t7); p2.add(t8); p2.add(t9); add(p1,BorderLayout.WEST); add(p2,BorderLayout.EAST); add(termina,BorderLayout.SOUTH); add(avvia,BorderLayout.NORTH); pack(); show(); } public static void main(String [] arg) { new PiastraGUI(); <----- questo è il main ma è per prova naturlamente istanziando una nuova piastraGUI } // Ascoltatore di eventi Action public class Ascoltami implements ActionListener { public void actionPerformed (ActionEvent e) { System.out.println("FINE APPLICAZIONE"); System.exit(0); } } } Spero di non chiedere troppo...e soprattutto mi scuso per la poca competenza e quindi magari ho utilizzato termini e modi non appropriati !!! a presto bye !! ![]() ![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Aggiungendo una J ai componenti, sostituendo l'invocazione "show()" con "setVisible(true)" ed affidando le due invocazioni "pack()" e "setVisible(true)" al propagatore degli eventi AWT
Codice:
SwingUtilities.invokeLater(new Runnable() { public void run() { pack(); setVisible(true); } }); Puoi usare dei cicli per costruire un'interfaccia grafica esattamente come useresti un ciclo per un problema che non coinvolga "cose che appaiano sullo schermo". Tutto quello che occorre è individuare una o più forme regolari nel procedimento di costruzione della tua interfaccia e poi esprimere quelle regolarità con delle ripetizioni dello stesso "pattern". Ad esempio, puoi costruire l'interfaccia così: Codice:
String[] labels = { "larghezza", "lunghezza", "Numero Nodi Larghezza", "Numero Nodi Lunghezza", eccetera... }; JPanel p = new JPanel(new GridLayout(labels.length, 2)); for(String s : labels) { p.add(new JLabel(s)); p.add(new JTextField()); } Codice:
public final class ButtonField extends JPanel { private JTextField textField = new JTextField(); private JButton button = new JButton("ok"); public ButtonField() { super(new FlowLayout()); add(textField); add(button); } } Per ridurre il codice, puoi fare di ButtonField una sorgente di eventi a notifica singola. Crei un'interfaccia: Codice:
public interface UnicastMessageListener { void receive(String sourceName, String message); } Codice:
import javax.swing.*; import java.awt.*; public final class ButtonField extends JPanel implements ActionListener { private JTextField textField = new JTextField(); private JButton button = new JButton("ok"); private UnicastMessageListener listener; private String name; public ButtonField(String name, UnicastMessageListener ul) { super(new FlowLayout()); this.name = name; listener = ul; add(textField); add(button); } public void actionPerformed(ActionEvent e) { if(e.getSource() == button && listener != null) { listener.receive(name, textField.getText()); } } } Codice:
...in PiastraGUI extends JFrame implements UnicastMessageListener String[] labels = { "larghezza", "lunghezza", "Numero Nodi Larghezza", "Numero Nodi Lunghezza", eccetera... }; JPanel p = new JPanel(new GridLayout(labels.length, 2)); for(String s : labels) { p.add(new JLabel(s)); p.add(new ButtonField(s, this)); } ... public void receive(String sourceName, String message) { } Si apre il problema dell'associazione tra il "nome" di chi abbia segnalato il messaggio e le ulteriori azioni da intraprendere. In verità l'unico problema qui è la scelta tra il miliardone di soluzioni immaginabili. Non entro nel merito perchè ho già scritto un panegirico e non vorrei abusare dell'attenzione. |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: May 2005
Città: Europa
Messaggi: 1400
|
Quote:
Che intendi per problema di associazione nome ??? ed ulteriori azioni da intraprendere ??? ![]() cmq ti ringrazio moltissimo per l'intervento ![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Diciamo che l'utente abbia appena premuto il pulsante ok dopo aver scritto "10" nel campo di testo che sta di fianco all'etichetta "larghezza".
Secondo quanto esposto, il nostro PiastraGUI riceve un notifica dell'accadimento nel suo metodo "receive(String, String)". In particolare, riceve due stringhe, la prima con valore "larghezza" e la seconda "10". Quel "10" finirà da qualche parte, altrimenti il pulsante "ok" non avrebbe ragione d'essere. Potrebbe essere un parametro da impostare per un dispositivo connesso al PC piuttosto che un valore per un grafico e via fantasticando. Fatto sta che dobbiamo farci qualcosa. Il "problema" è che abbiamo 13 campi. Personalmente non ho mai avuto nulla di ideologicamente avverso alle catene di if-else. E' tuttavia possibile che, nel caso in cui i dati collezionati attraverso l'interfaccia abbiano un che di particolare quanto al loro uso, esistano strumenti migliori. Ad esempio, se le impostazioni raccolte attraverso l'interfaccia dovessero andare a comandare un qualche genere di strumento allora potrebbe non essere bizzarra l'idea di voler conservare la successione di impostazioni a fini diagnostici o statistici. In questo caso la catena di if dovrebbe essere rimpiazzata da un che di più bizzarro a cui ci si possa affidare per la conservazione delle diverse impostazioni, man mano che siano applicate. Immagino quindi un qualcosa tipo JavaBean, in cui un qualcos'altro, diverso da PiastraGUI, infili i dati sapendo come interpretare i messaggi che i molti ButtonText inviano. Un terzo oggetto potrebbe ricevere il bean e salvarlo da qualche parte, mentre un quarto piglierebbe lo stesso bean e lo applicherebbe allo strumento. Sto sul generico per evitare di parlare di cose di cui magari non hai per nulla bisogno o che già conosci. In definitiva, la domanda è: che ci fa il programmino con quei dati? |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:06.