Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-08-2003, 19:44   #1
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Socket,java e JTextArea...

sto imparando a usare i socket con java e vorrei poter stampare in una JTextArea i comandi che mi invia il server però ogni volta che il server mi invia un comando mi si riapre una JTextArea mentre io vorrei che mi rimanesse aperta sempre la stessa e che i messaggi si accodassero uno dietro l'altro...ecco il codice del mio programma
Codice:
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class irc {
    public static void main(String[] args) {


String pong="",pon="",comandi="",prova="";
char po[];

po = new char[9];
        Socket smtpSocket = null;
        PrintStream os = null;
        DataInputStream is = null;
        JTextArea outputarea = new JTextArea(30,30);


     try {

            smtpSocket = new Socket("irc.tin.it", 6667);
            os = new PrintStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());

        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: hostname");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: hostname");
        }


 if (smtpSocket != null && os != null && is != null) {
            try {


   os.println("user user hostname ip :user");
   os.println("nick guest1");

   pong = is.readLine();
   pong.getChars(5,13,po,0);
   for (int i=0;i<9;i++)
    pon += po[i];
            System.out.println("pong="+pon);
            System.out.println(pong);
            os.println("pong "+pon);

    String responseLine;
        while ((responseLine = is.readLine()) != null) {
           System.out.println("Server: " + responseLine);
           prova += responseLine;
          outputarea.append(responseLine);
           JOptionPane.showMessageDialog(null,outputarea,"messaggio",
           JOptionPane.INFORMATION_MESSAGE);
             if (responseLine.indexOf("Ok") != -1) {
             break;
         }

    }
            os.close();
            is.close();
            smtpSocket.close();
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }
}
help me please!

Ultima modifica di SteR9 : 23-08-2003 alle 19:47.
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2003, 20:27   #2
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
E' sufficiente eliminare l'uso di JOptionPane e sostituirlo con una finestra, sempre visibile, a cui connetti la JTextArea:

Ad esempio:

Codice:
public static void main(String[] a) {
  JFrame frame=new JFrame("Titolo");
  frame.getContentPane().add(outputarea);
  //la riga seguente è una funzione standard da sostituire
  //con una chiusura dell'applicazione più consona
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(500,500);
  frame.show();

  ecc.  ecc.
Puoi eliminare direttamente la chiamata a "showMessageDialog"

Codice:
JOptionPane.showMessageDialog(null,outputarea,"messaggio",
JOptionPane.INFORMATION_MESSAGE);
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2003, 20:48   #3
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da PGI

non ho ancora studiato il jframe quindi basta che aggiungo ?
Codice:
public static void main(String[] a) {
  JFrame frame=new JFrame("Titolo");
  frame.getContentPane().add(outputarea);
  //la riga seguente è una funzione standard da sostituire
  //con una chiusura dell'applicazione più consona
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(500,500);
  frame.show();
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2003, 21:23   #4
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
ok sono riuscito...e se ora volessi inviare un comando al server??
dovrei usare un action listener?
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2003, 22:01   #5
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
E' più lungo a dirsi che a farsi:

ti serve un'area di testo o un campo, a seconda che tu voglia inviare una o più linee di testo insieme. Poi imposti il layout del JFrame in modo che il componente di testo venga visualizzato con un minimo di coerenza:
Codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
...

class...
...
static JTextField testoOut=new JTextField();
...
public static void main(String[] a) {
 JFrame frame=new JFrame("Titolo");
 JTextArea outputArea=new JTextArea();
 frame.getContentPane().setLayout(new BorderLayout());
 frame.getContentPane().add(testoOut, BorderLayout.SOUTH);
 frame.getContentPane().add(outputArea, BorderLayout.CENTER);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setSize(400,400);
 frame.show();
...ecc...
Ora hai una finestra per "invio e ricezione";

Aggiungi a "testoOut" un gestore di eventi che reagisca alla pressione del tasto "enter" (il metodo più intuitivo per l'invio di testo da componenti a linea singola):
Codice:
testoOut.addKeyListener(new KeyAdapter() {
  public void keyPressed(KeyEvent ke) {
    if(ke.getKeyCode()==KeyEvent.VK_ENTER) {
      inviaTestoAlServer();
    }
  }
});
"inviaTestoAlServer()" è un metodo che dovresti creare, il cui scopo è inviare testo sullo stream "os".

Codice:
 static void inviaTestoAlServer() {
   os.println(testoOut.getText());
 }
Ho scritto "al volo" ma dovrebbe essere tutto. In caso sono qui (magari tardi ma rispondo )
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 06:46   #6
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
mi da questo errore nella funzione keyPressed
identifier> expected
testoOut.addKeyListener(new KeyAdapter() {

Ultima modifica di SteR9 : 24-08-2003 alle 07:05.
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:00   #7
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
controlla la successione di parentesi e la presenza di un punto e virgola al termine della settima linea.

Il codice seguente è corretto :

Codice:
    testoOut.addKeyListener(new KeyAdapter() {
      public void keyPressed(KeyEvent ke) {
        if(ke.getKeyCode()==KeyEvent.VK_ENTER) {
          //
        }
      }
    });
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:02   #8
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
posto il codice che facciamo prima...

Codice:
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class irc extends Frame implements KeyListener{

 testoOut.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent ke) {
      if(ke.getKeyCode()==KeyEvent.VK_ENTER) {
        inviaTestoAlServer();
      }
    }
  });
    static void inviaTestoAlServer() {
    os.println(testoOut.getText());
    }

public static void main(String[] args){

  JTextField testoOut=new JTextField();
  JTextArea outputarea = new JTextArea();
  JFrame frame=new JFrame("Titolo");
  frame.getContentPane().add(outputarea);
  frame.getContentPane().add(testoOut, BorderLayout.SOUTH);
  //la riga seguente è una funzione standard da sostituire
  //con una chiusura dell'applicazione più consona
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(500,500);
  frame.show();
  String pong="",pon="",comandi="",prova="";
  char po[];

  po = new char[9];
        Socket smtpSocket = null;
        PrintStream os = null;
        DataInputStream is = null;



     try {

            smtpSocket = new Socket("irc.dal.net", 6667);
            os = new PrintStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());

        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: hostname");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: hostname");
        }


 if (smtpSocket != null && os != null && is != null) {
            try {


   os.println("user user hostname ip :user");
   os.println("nick guest2993");

   pong = is.readLine();
   pong.getChars(5,13,po,0);
   for (int i=0;i<9;i++)
    pon += po[i];
            System.out.println("pong="+pon);
            System.out.println(pong);
            os.println("pong "+pon);

    String responseLine;
        while ((responseLine = is.readLine()) != null) {
           System.out.println("Server: " + responseLine);
           prova += responseLine;
          outputarea.append(responseLine + "\n");
             if (responseLine.indexOf("Ok") != -1) {
             break;
         }

    }
            os.close();
            is.close();
            smtpSocket.close();
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }

}
grazie
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:14   #9
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Bel macello

All'esterno di un metodo in Java puoi inizializzare variabili ma non usare gli oggetti inizializzati.

testoOut.addKeyListener(...)

va a finire nel main.

Non è necessario che "irc" estenda Frame né che implementi KeyListener. O meglio, sarebbe il modo più "Java-style" di costruire l'applicazione, ma devi rimaneggiare ampiamente il codice per portarlo su quella strada.

PrintStream os = null; dovrebbe diventare

static PrintStream os= null;

e finire in un'area di visibilità di classe (quella in cui al momento si trova testoOut.addKeyListener(...) )

Così dovrebbe "andare"
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:21   #10
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
mmm non ho ben capito cosa devo fare....
in pratica lui non riconosce testoOut??
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:25   #11
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Non solo, anche se avessi dichiarato la variabile testoout "prima" comunque non avresti potuto attaccargli un keyListener.

Se mi dai 5 minuti ti sposto le linee di codice che andrebbero spostate e le evidenzio in grassetto, così tagliamo la testa al toro
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:35   #12
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Così dovrebbe compilare correttamente. Dovrebbe anche funzionare.

Codice:
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class temp /*extends Frame implements KeyListener*/{

/* testoOut.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent ke) {
      if(ke.getKeyCode()==KeyEvent.VK_ENTER) {
        inviaTestoAlServer();
      }
    }
  });*/
  
  static JTextField testoOut = new JTextField();
  
  static PrintStream os = null;
  
  static void inviaTestoAlServer() {
    if(os!=null) {
    	os.println(testoOut.getText());
    }
  }

public static void main(String[] args){

  //JTextField testoOut=new JTextField();
  
  //******************************************
	testoOut.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent ke) {
      if(ke.getKeyCode()==KeyEvent.VK_ENTER) {
        inviaTestoAlServer();
      }
    }
  });  
  //******************************************
  
  JTextArea outputarea = new JTextArea();
  JFrame frame=new JFrame("Titolo");
  frame.getContentPane().add(outputarea);
  frame.getContentPane().add(testoOut, BorderLayout.SOUTH);
  //la riga seguente è una funzione standard da sostituire
  //con una chiusura dell'applicazione più consona
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(500,500);
  frame.show();
  String pong="",pon="",comandi="",prova="";
  char po[];

  po = new char[9];
        Socket smtpSocket = null;
        /*PrintStream os = null;*/
        DataInputStream is = null;



     try {

            smtpSocket = new Socket("irc.dal.net", 6667);
            os = new PrintStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());

        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: hostname");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: hostname");
        }


 if (smtpSocket != null && os != null && is != null) {
            try {


   os.println("user user hostname ip :user");
   os.println("nick guest2993");

   pong = is.readLine();
   pong.getChars(5,13,po,0);
   for (int i=0;i<9;i++)
    pon += po[i];
            System.out.println("pong="+pon);
            System.out.println(pong);
            os.println("pong "+pon);

    String responseLine;
        while ((responseLine = is.readLine()) != null) {
           System.out.println("Server: " + responseLine);
           prova += responseLine;
          outputarea.append(responseLine + "\n");
             if (responseLine.indexOf("Ok") != -1) {
             break;
         }

    }
            os.close();
            is.close();
            smtpSocket.close();
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }

}
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 13:42   #13
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Ho dimenticato una linea.

E' meglio che la linea di testo presente nel JTextField venga resettata dopo l'invio...a dire il vero è l'unico modo per inviare più comandi

Codice:
  static void inviaTestoAlServer() {
    if(os!=null) {
    	os.println(testoOut.getText());
        testoOut.setText("");
    }
  }
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 14:01   #14
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
funziona alla grande,ti ringrazio!
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 14:38   #15
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
e se volessi aggiungere uno scroller??che funzione devo usare??
perchè quando il testo diventa lungo sparisce...
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 15:36   #16
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
La semplicità delle librerie Java ci viene in aiuto.

Occorre usare un "JScrollPane"

cambia questa riga

frame.getContentPane().add(outputarea);

con queste due

JScrollPane scroller=new JScrollPane(outputarea);
frame.getContentPane().add(scroller);

e il gioco è fatto.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 16:00   #17
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da PGI
La semplicità delle librerie Java ci viene in aiuto.

Occorre usare un "JScrollPane"

cambia questa riga

frame.getContentPane().add(outputarea);

con queste due

JScrollPane scroller=new JScrollPane(outputarea);
frame.getContentPane().add(scroller);

e il gioco è fatto.
perfetto però non scende automaticamente...non si può far si che scenda automaticamente ogni nuova linea?
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 16:10   #18
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Quote:
Originariamente inviato da SteR9
perfetto però non scende automaticamente...non si può far si che scenda automaticamente ogni nuova linea?
Tutto si può fare!

Devi impostare la posizione del cursore nell'area di testo usando come indice la lunghezza del testo contenuto nell'area.

dopo la linea

outputarea.append(responseLine + "\n");


aggiungi questa

outputarea.setCaretPosition(outputarea.getText().length());
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 17:03   #19
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
visto che sto tentando di creare un client irc ora vorrei poter scrivere in un altro JFrame ciò che viene scritto nel canale,mi è abbastanza chiaro come fare,ma non ho ben chiaro come "estrarre" solo ciò che viene scritto nel canale....
non esiste un tutorial sulla creazione di un client??con anche tutti i comandi che può ricevere un server irc...
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2003, 17:08   #20
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Per un tutorial sinceramente non saprei dove indirizzarti. Vediamo se qualcun'altro interviene.
PGI è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Lancio del razzo spaziale cinese Lunga M...
SpaceX Starship: Super Heavy Booster 20 ...
Questa RTX 3070 è tornata in vita...
Un ricercatore scopre uno script bash na...
Robot umanoidi teleoperati eseguono le p...
QuadRF, il gadget da 499 dollari che leg...
ChatGPT, Claude e Gemini nel mirino: cos...
Pneumatici dalla Cina, l'UE introduce da...
SpaceX vuole 100.000 satelliti in orbita...
Disney+ gratis, ma con pubblicità: l'ult...
Microsoft ammette: emissioni di CO2 su d...
Apple denuncia OpenAI e due ex dirigenti...
Asha Sharma licenzia migliaia di dipende...
25 articolazioni, pelle tattile e forza ...
Creato un chip quantistico in cui la mem...
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: 20:58.


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