Newsgroup: it.comp.java
Titolo: ancora problemi...(1)formato data (2)socket (3)applet?

Innanzitutto volevo ringraziare tutti Voi in quanto mi state aiutando
tantissimo, e adesso passo alle domande:
1)lo so che è banale, ma non mi
era mai capitato di dover formattare una data di sistema così:
"2002/06/03:22:34:56" , ho guardato sulla documentazione ufficiale della
sun e ho trovato la classe: SimpleDateFormat, come si usa questa classe
avendo gia' preparato l'oggetto: 
Calendar data = Calendar.getInstance();
oppure devo usarne un altro? 
2)avendo una connessione con socket, e
volendo sapere a quale indirizzo il client si collega, come posso usare il
metodo 
.getHostName() visto che non e' della classe Socket, ma di una
sottoclasse InetAddress?
es. codice server:
Socket connectionSocket =
welcomeSocket.accept();
//mi da la porta del client
int porta =
connectionSocket.getPort();
//come faccio a usare .getHostName() con la
mia connectionSocket?
3)dovendo offrire all'utente la possibilita' di
modificare il contenuto di un file.txt attraverso un' interfaccia
interattiva, ed essendo il file composto da più righe, ho pensato di
caricare il file in un array per aggiornare i dati, ma come interfaccia,
cosa posso usare?
-JOptionPane mi offre la possibilità di modificare un
solo dato, e non posso presentare i dati uno sotto l'altro;
-Ho pensato
ad una applet, pensando di usare JLabel e TextField nell'init() facendone
quanti sono gli elementi dell'array, mentre
nell'actionPerformed(ActionEvent e), questo: String elementoModificato =
e.getActionCommand(); funzionerebbe?
Altrimenti come potrei fare?
Grazie anticipatamente.
--------------------------------
Inviato via 
http://usenet.iol.it

 solo dato, e non posso presentare i dati uno sotto l'altro;
???? Come un solo dato.
La JOptionPane, se te la istanzi e la prepari, ci metti dentro quello che ti
pare. Io ci carico le JList con tanto di JScrollPane, più una JLabel per
indicare cosa contiene quella JList, il bello che la costruisco
dinamicamente, quindi posso mettere più JList e JLabel e scegliere che tipo
di bottini mostrare. Nessuno ti vieta di metterci dentro una JTextArea o
quello che ti pare.

quello che ti pare.
--------------------------------
Inviato via 
http://usenet.iol.it
 

 visualizzare un array.. e un messaggino di commento in alto?
Certo che posso.
Le JOptionPane, come praticamente tutti gli oggetti SWING, utilizzano gli
Onject, proprio perchè sono in grado con questi, di plasmarsi su i dati
passati.
Quello che ti posto è un codice con il quale crei una JDialo, con l'aspetto
di una JOptionPane.
Perchè una JDialog? Perchè se noti bene, alle JOptionPane, non è possibile
disabilitare il resize.
A me scocciava questo, quindi ho adottato questa soluzione. Se vedi che
questa caretteristica invece non ti crea problemi basta togliere poche righe
di codice dall'esempio quì sotto.
Quello che creeremo ora è una JOptionPane => JDialog, con una icona
personalizzata, un'area di testo scrollabile, e una Label come dicitura.
        //Ci serve un pannello contenitore per il tutto.
            JPanel pnl = new JPanel();
        // e LayOut per questo pannello
            pnl.setLayout(new BorderLayout());
        //Ora una bella JTextArea che funge da titolo
            JTextArea txtCommento = new JTextArea("INSERISCI QUI UN
COMMENTO. CON \n MANDI A CAPO LA RIGA");
            txtCommento.setOpaque(false); // rendo lo sfondo trasparente
            txtCommento.setEditable(false); // e ne disabilito la
possibilità di scrittura
        // Posiziono l'oggetto sulla parte Nord del Pannello
            pnl.add(txtCommento,BorderLayout.NORTH);
        // Avverto il Layout che l'oggetto avrà una dimensione massima
        // Se questa caratteristica non ti serve, puoi anche remmarla.
            txtCommento.setMaximumSize(1000,40);
        //Ora la JTextArea che mostrerà il testo vero e proprio
            JTextArea txtMsg = new JTextArea("TESTO!!!!");
        // Creo la JScrollPane per l'area di testo.
        // Nota che ho passto direttamente la JTextArea nel costruttore
della ScrollPane
            JScrollPane scrl = new JScrollPane(txtMsg);
        // Posiziono l'oggetto sulla parte CENTRALE del Pannello
            pnl.add(scrl,BorderLayout.CENTER);
        // Se desideri dare una dimensione ben specifica al pannello che
contiene tutta questa roba
        // (parlo di quello che contiene le due JTextArea),puoi specificarlo
mediante il setPreferredSize
        // Questa istruzione è molto usata internamente ai vari oggeti SWING
        // Ad esempio se metti un pannello dentro una JScrollPane, se ti
scordi di settare
        // le dimensioni del pannello con questa istruzione, scordati di
vedere le ScrollBar
        // attivarsi se il pannello è più grand dell'area visibile etc.
            pnl.setPreferredSize(new Dimension(larghezza,altezza));
        // Se vuoi personalizzarti dinamicamente il tipo di bottoni, puoi
fare una cosa tipo questa
        // qui sotto, passando al costruttore la variabile option invece
della costante.
        // Altrimenti salta pure queste righe di codice.
            if(option != JOptionPane.YES_NO_OPTION)
                 option = JOptionPane.CLOSED_OPTION;
        // Ora creo la JOptionPane.
        // Supponiamo di creare un messaggio di errore
        // Come vedi passo al costruttore :
        //     - il pannello sopra creato (pnl)
        //     - gli dico che voglio il solo bottone di conferma (OK =
JOptionPane.CLOSED_OPTION)
        //     - gli passo un oggetto di tipo Image, nel quale avevo
caricato nel costruttore
        //        l'immagine personalizzata, creata da me.
             JOptionPane jop = new JOptionPane(pnl,
                             JOptionPane.ERROR_MESSAGE,
                             JOptionPane.CLOSED_OPTION, iconStop);
        // Oooooohhhhhh!!!!!!!!
        // Ora creo la JDialog vera e propria.
        // In input devi passargli il Frame o JFrame al quale sarà attcato
        // e il messaggio da scrivere sulla title bar.
             JDialog dialog = jop.createDialog(Frame/JFrame, Messggio);
             dialog.setResizable(false);
             dialog.setVisible(true);
        // Queste poche righe servono a vedere se per caso è stato premuto
il
        // bottone di chiusura della finestra.
        // Se il valore della finestra è uguale a null, vuol dire che la
finestra è stata
        // Chiusa e che non è stato premuto nessun bottone.
        // Quindi la riapro.
             Object selectedValue = null;
             while( (selectedValue =jop.getValue()) == null )
                    dialog.setVisible(true);
        // In caso contrario vedo che bottone ho premuto
        // Se sai che tanto hai solo un bottone puoi lasciare stare queste
righe di codice
        // te le aggiungo perchè almeno se ti personalizzi i bottoni sai poi
come rileggerteli
            if(option == JOptionPane.YES_NO_OPTION){
                int ris = ((Integer)selectedValue).intValue();
                if(ris == 0) return "YES";
                else         return "NO";
            }
Ok, ora buon lavoro.

di una JOptionPane.
Sei stato troppo gentile, non ho
parole, grazie mille!!
Adesso mi metto subito al lavoro!
Ho notato una
cosa, nelle ultime istruzioni c'era la parola riservata return, ma
solitamente questa si usa per far ritornare un valore da un metodo, ma
essendo nel main,  non centra giusto? Se avessi messo tutto il codice in
una altro metodo che veniva invocato allora sarebbe andata bene...penso..
PS:..Con JOPtionPane è anche possibile visualizzare dei dati di default,
lasciarli modificare all'utente e poi riacquisirli?
Grazie ancora..
Ciao ciao.


Quelle righe di codice fanno parte un metodo al quale passo una serie di
parametri, con i quali lui costruisce dinamicamente la JOptionPane.
Nel caso in cui, come parametro, gli passo  una costante per far settare i
bottoni "Ok Annulla", mi ritorna anche il tipo di scelta. Ecco il perchè di
quei return.

 lasciarli modificare all'utente e poi riacquisirli?
Chi te lo vieta? L'hai costruita tu? Conosci istanza per istanza tutti i
componenti che ci hai messo dentro.
Se intercetti il tasto "Ok" (vedi codice di esempio sul post precedente)
leggi ad esempio il contenuto della tua area di testo e te lo salvi su un
file.
Ok?