• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Łączenie GUI z serwerem w JAVA.

Object Storage Arubacloud
0 głosów
841 wizyt
pytanie zadane 24 lutego 2016 w Java przez MrChalski Użytkownik (850 p.)

Witam Panowie, mój problem polega na tym że piszę program, Chat. Nauczyciel dał nam gotowy kod do serwera i clienta, a naszym celem jest stworzenie GUI i potem połączenie tego wszystkiego by to działało właśnie w tym GUI z obsługą serwera (by serwer odpowiadał, może być nawet jeden użytkownik)

Dodam tu kod tego co dał nauczyciel, oraz tego GUI co tworzę, dodam że GUI jest niedokończone. :)

package serwer;

import java.net.Socket; //
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; // strumien
import java.net.ServerSocket;// bufor zapisyu
import java.io.PrintWriter; //
import java.util.Date; 

public class serwer {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		//Utworzenie serwera na porcie 1500
		ServerSocket ssc = new ServerSocket(1500); // na porcie 1500
		
		
		System.out.println("serwer został uruchomiony");
		
		try {
            while (true) {
            	//akceptacja przychodzących połączeń
                Socket socket = ssc.accept(); // soket wykrozystywany do komunikacji , akceptuje połeczenia przychodzace
                try {
                	//tworzenie buforu odczytu
                	BufferedReader input =
            	            new BufferedReader(new InputStreamReader(socket.getInputStream()));
            	            
            	        //odczyt linii z bufora odczytu
            	        String answer = input.readLine(); //pobieram z komunikatu info
                	
                	//sprawdzanie odpowiedzi
            	    if (answer.equals("tak")){
            	    //tworzenie bufora zapisu
                    PrintWriter out =
                        new PrintWriter(socket.getOutputStream(), true);
                        
                    //zapis do bufora zapisu - wysłanie wiadomości do klienta
                    out.println(new Date().toString());
            	    }
            	    else {
            	    	//tworzenie bufora zapisu
            	    	PrintWriter out =
                                new PrintWriter(socket.getOutputStream(), true);
                            //zapis do bufora zapisu - wysłanie wiadomości do klienta
                            out.println("Nie chiałeś daty"); // wyswietla
            	    }
            	    
                } finally {
                	//zamknięcie socket
                    socket.close();
                }
            }
        }
        finally {
        	//zamknięcie ssc
            ssc.close();
        }
		
		
	}

}

 

 

 

package klient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;

import javax.swing.JOptionPane; // do pytanie tak czy nie

public class klient {

	public static void main(String[] args) throws IOException {
	
	    	     
	     	//ustanowienie połączenia z serwerem na porcie 1500
	        Socket s = new Socket("localhost", 1500); // zdefiniowanie z jakim serwerem i na jakim porcie
	        
	        //Wyświtlenie okna z pytaniem do użytkownika i pobranie jego odpowiedzi
	        String t = JOptionPane.showInputDialog(
		            "Czy podać datę?");
	        
	        //tworzenie bufora zapisu
	        PrintWriter out =
                    new PrintWriter(s.getOutputStream(), true);
                 //zapis do bufora zapisu - wysłanie wiadomości do klienta
                out.println(t);
	        
	        //tworzenie buforu odczytu
	        BufferedReader input =
	            new BufferedReader(new InputStreamReader(s.getInputStream()));
	        //odczyt linii z bufora odczytu
	        String answer = input.readLine();
	        //wyświtlenie MsgBoxa z otrzymaną odpowiedzią serwera
	        JOptionPane.showMessageDialog(null, answer);
	        
	        //Zakończenie pracy programu
	        System.exit(0);

	}

}

 

 

 

package GUI;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class GUI extends JFrame{
	
	JButton buttonWyślij;
	JLabel labelWiadomość;
	JTextField poleWiadomość, poleCzat;
	
	public GUI(){
		
		setSize(600,600);
		setTitle("Chat");
		setLayout(null);
		
		buttonWyślij = new JButton("Wyślij");
		buttonWyślij.setBounds(470,550,120,20);
		add(buttonWyślij);
		
		labelWiadomość = new JLabel ("tekst :");
		labelWiadomość.setBounds(5,535,50,50);
		add(labelWiadomość);
		
		poleWiadomość = new JTextField("");
		poleWiadomość.setBounds(55,550,400,20);
		add(poleWiadomość);
		
		poleCzat = new JTextField ();
		poleCzat.setBounds(20,20,550,500);
		add(poleCzat);
		
	}

	
	public static void main(String[] args) {
		
		GUI okienko = new GUI();
		okienko.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		okienko.setVisible(true);
	}

}

 

2 odpowiedzi

+1 głos
odpowiedź 24 lutego 2016 przez Piotr Karasiński Mądrala (6,360 p.)
Chciałeś się pochwalić? Zapytać o coś? Czy co? Bo czegoś mi tu brakuje.
komentarz 24 lutego 2016 przez MrChalski Użytkownik (850 p.)
U góry jest całe pytanie, chciałbym by połączyć ten serwer, clienta z GUI, aby w GUI to działało, a nie w konsoli.
+1 głos
odpowiedź 24 lutego 2016 przez Piotr Karasiński Mądrala (6,360 p.)

Najprościej to mnie więcej tak:

do przycisku dodać listener

buttonWyślij.addActionListener(new ActionListener() {
	@Override
	public void actionPerformed(ActionEvent e) {
		wyslij();
	}
});

 

a potem metodę wyślij.

 

private void wyslij() {
	try {
	//ustanowienie połączenia z serwerem na porcie 1500
	Socket s = new Socket("localhost", 1500); // zdefiniowanie z jakim serwerem i na jakim porcie

		//tworzenie bufora zapisu
		PrintWriter out
			= new PrintWriter(s.getOutputStream(), true);
		//zapis do bufora zapisu - wysłanie wiadomości do klienta
		out.println(poleWiadomość.getText());

		//tworzenie buforu odczytu
		BufferedReader input
			= new BufferedReader(new InputStreamReader(s.getInputStream()));
		//odczyt linii z bufora odczytu
		String answer = input.readLine();
		poleCzat.setText(answer);

	} catch (IOException ex) {
		Logger.getLogger(JavaApplication.class.getName()).log(Level.SEVERE, null, ex);
	}
}

 

i to już działa.

Zamieniłbym jednak pole chat z JTextField na JTextArea i do niego dodawał metodą append

komentarz 24 lutego 2016 przez MrChalski Użytkownik (850 p.)
Stary wielkie dzięki :D czy w razie jakichkolwiek problemów mógłbym pisać priv ?
1
komentarz 25 lutego 2016 przez Ehlert Ekspert (212,670 p.)
Jeśli masz problem pisz na forum. Takie tematy się przydają potem korzystają z mich inni.

Podobne pytania

0 głosów
1 odpowiedź 127 wizyt
pytanie zadane 28 czerwca 2020 w Java przez manager96 Bywalec (2,050 p.)
0 głosów
1 odpowiedź 333 wizyt
pytanie zadane 24 maja 2020 w Java przez zdridox Nowicjusz (210 p.)
0 głosów
3 odpowiedzi 506 wizyt
pytanie zadane 25 czerwca 2018 w Java przez trebuhhh Użytkownik (740 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...