java.awt.EventQueue importieren; javax.swing.JFrame importieren; javax.swing.BoxLayout importieren; javax.swing.JScrollPane importieren; javax.swing.JTextArea importieren; javax.swing importieren. jtexField; Importeur net.miginfocom.swing.MigLayout ; Importeur javax.swing.JButton ; Importeur javax.swing.ScrollPaneConstants und javax.swing.JLabel ; Importeur com.jgoodies.forms.usines. DefaultComponentFactory; privater JFrame-Rahmen ; privater JScrollPane scrollPane ; privater JTextFeldtypFieldField ; privater JoButton stnSenden ; privater JTextArea-TextArea ; privater JTextFeldnameFeld ; privater BloDeinName; Rückgabe-Rahmen; Rückgabe-scrollPane ; RückgabetypFeld ; Rückgabe btnSende; Rückgabewert textArea ; Rückgabe report Field ; Rückgabe sinn$Name ; cBlend
Rahmen = Rahmen ; diese.scrollPane = scrollPane ; diese.typeField = typeField ; diese.btnSenden = blackSenden; diese.textArea = textArea = textArea ; diese.nameField = nameField ; diese.lblDeinName = lblDeinName Zeichen ; * Erstellen der Anwendung. initialize(m) ; * Initialisieren des Inhalts des Rahmens. Rahmen = neuer JFrame() ; Rahmen. setBounds (100, 100, 450, 300) ; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; Rahmen.getContentPane().setLayout(new MigLayout("""", "[grow][grow][grow][grow]]", "[][grow][grow][]]][]]]") ; llblDeinName = DefaultComponentFactory.getInstance().
getContentPane ().add(lblDeinName, "cell 0 0,alignx trailing") ; namefeld = neues JTextField() ; nameField.setText("nameField") ; frame.getContentPane().add(nameField," Zelle 1 0,growx") ; nameFeld. setColumns (10) ; Scrollpaneel = neues JScrollPane() ; Scrollpaneel. setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS) ; frame.getContentPane(). add (scrollPane, "cell 0 1 2 1,grow")) ; textArea = new JTextArea() ; scrollPane.setViewportViewView(textArea) ; typeField = new JTextField() ; frame.getContentPane(). add(typeField, " Zelle 0 2,growx ") ; typeField. setColumns (10); buntenSenden = neue JButton("Send"); btnSenden.setActionCommand("send"); buntenSenden.addActionListener(new ChatController(this, m)); frame.getContentPane().add(btnSenden, "cell 1 2");
Dieses Kapitel beschreibt, wie ein Chatprogramm in Java implementiert werden kann. Im Allgemeinen muss ein Progamm erstellt werden, das die Eingabe für jeden Chatteilnehmer erlaubt und alles anzeigt, was für andere Teilnehmer eingetragen wurde. Es wird als Mandant bezeichnet. Das zweite Progamm, der Chatserver, erhält alle Inputs von den Kunden und schickt sie an alle anderen Chatteilnehmer (d.h. an die Kunden).
Beispiel: Chat-Client - Verwendung von Java in einem Netzplan
java.net.* ; java.io.* ; statischer finaler Zeichenkette-Analog = "ANMELDUNG" ; statischer finaler Zeichenkette-ENDE = "ENDE" ; statischer interner Port = 1234 ; Zeichenketten-Servername = "localhost" ; Zeichenkettentext = null ; DatagramPaketpaket ; Byte[] b = ANMELDUNG. der Zeichenkette. getsBytes (); if( args.length > 0 ) Servicename = args[0]; DatagramSocket-Sockel = neuer DatagramSocket(); InetAddress ia = InetAddress.
gotByName ( Servername) ; Paket = neues DatagramPacket( ba, Ba-Länge, ia, Port) ; socket.send( Paket) ; LeseThread lt = neues LeseThread( Socket) ; PufferedReader br = neuer BufferedReader(nouveau InputStreamReader( System.in)) ; Text = br.readLine() ; Ba = text.getBytes() ; Paket. setData( ba, 0, b) Länge ); socket.send( Paket); } while( ! text.equals("ENDE") ); System.exit(0); System.err.println("Exception error: " + e ); Dazu zählt die Kategorie ReadThread zum Empfangen von Meldungen. static int length = 256; DatagramSockcket Socket; thisSockel = Sockel; Gewinde t = neuer Gewinde (dieser, "Read"); t.
star() ; neues DatagramPaket( neues Byte[Länge], Länge) ; socket.receive( Paket) ; InetSocketAddress add = (InetSocketAddress)packet.getSocketAddress() ; Zeichenkettentext = neue Zeichenkette(Paket. getData(), 0, packet.getLength()); System.out.println( add +">" + Text); //System.out.println(">" + Text); System.err.println("Ausnahmefehler: " + e );