Obsługa zdarzeń - Przyciski

0

Witam. Mam problem z wywoływaniem funkcji w buttonie.
Posiadam klasę Klient, w której jest konstruktor, oraz kilka funkcji. W mainie tworzę obiekty typu Klient, oraz wywołuję na rzecz tych obiektów funkcje i wszystko jest okej.
Pytanie jak za pomocą **ActionListener **wrzucić taką funkcję do przycisku tzn żeby dowolny przycisk uruchamiał funkcje klasy Klient? (Chyba że jest jakiś inny sposób). ?
Z góry dzięki za pomoc :)

ps. wzorowałem się na tym Przypisać akcję do przycisku jednak nic mi to nie dało ;/

0

Z postu nie wynika czy przycisk znajduje się w klasie Klient. Jeśli tak, to

button.addActionListener(e -> doSomething());

jeśli nie, to

Klient klient = new Klient();
...
button.addActionListener(e -> klient.doSomething());
0
public  class Klient extends JFrame implements ActionListener
{  
    JButton magazyn;
    BufferedReader klawiatura;
    PrintWriter out;
    private Socket socketKlienta;
    private BufferedReader in;
    ObjectOutputStream OOS=null;
    ObjectInputStream OIS=null;
     Magazyn m3  = new Magazyn();
      String nazwaPliku="E:\\Pliczek.txt";

      
    
      Klient() {
        try {
        socketKlienta = new Socket("localhost", 2020);
     
        } catch (IOException e) {
            System.out.println("Uruchom serwer: " + e);
            System.exit(1);
        }
    }

    public static void main(String[] args) throws Exception 
{  
    Klient okno = new Klient("klient");    
    okno.init();   
    okno.setVisible(true);  
    okno.pack();
    
    Klient client = new Klient();
    
     
      
}
     void utworzStrumienie() throws Exception 
     {
        String messageFromServer = null;


OIS = new ObjectInputStream(socketKlienta.getInputStream());
OOS=new ObjectOutputStream(socketKlienta.getOutputStream());

}

     void wyslij() throws Exception
     {
         String messageFromServer = null;
        
        OOS.writeObject(123);
         System.out.println("wyslalem ");
  
     }

 
        ;


magazyn = new JButton("Magazyn");
magazyn.addActionListener(e ->{
         try {
             String messageFromServer = null;
               utworzStrumienie();
  wyslij();
        /////////////////////tutaj wystepuje bląd NullPointerException
         System.out.println("wyslalem ");
             
            
         } catch (Exception ex) {
             System.out.println("blad"+ex);;
         }
     });



 } 

    @Override
    public void actionPerformed(ActionEvent e) 
    {   
      
         
       
      
    }
    
    }

Zrobiłem tak jak pisałeś ale wyskakuje błąd nullpointerexception ;/

1

Zamieszczony kod ma mnóstwo błędów, między innymi instrukcje poza metodami. Trochę go wygładziłem i działa.

import javax.swing.*;
import java.io.*;
import java.net.*;

public  class Klient extends JFrame
{  
    JButton magazyn;
    BufferedReader klawiatura;
    PrintWriter out;
    private Socket socketKlienta;
    private BufferedReader in;
    ObjectOutputStream OOS=null;
    ObjectInputStream OIS=null;
    Magazyn m3  = new Magazyn();
    String nazwaPliku="E:\\Pliczek.txt";

    Klient() 
	{
        try 
		{
            socketKlienta = new Socket("localhost", 2020);

        } 
		catch (IOException e) 
		{
            System.out.println("Uruchom serwer: " + e);
            System.exit(1);
        }
        magazyn = new JButton("Magazyn");
        magazyn.addActionListener(e -> send());
		add(magazyn);
    }

    public static void main(String[] args) throws Exception 
    {  
        Klient okno = new Klient();


	
        //okno.init();   
        
        okno.pack();
		okno.setLocationRelativeTo(null);
		okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		okno.setVisible(true);
        		

        //Klient client = new Klient();

    }
    void utworzStrumienie()
    {
        String messageFromServer = null;
        try
		{
            OIS = new ObjectInputStream(socketKlienta.getInputStream());
            OOS = new ObjectOutputStream(socketKlienta.getOutputStream());
			System.out.println("Strumienie utworzone");
		}
		catch(Exception e)
		{
			System.out.println(e);
		}

    }

    void wyslij()
    {
        String messageFromServer = null;
	    try
		{ 
            OOS.writeObject("123");
		}
		catch(Exception e)
		{
			System.out.println(e);;
		}		
        System.out.println("wyslalem ");

    }


	void send()
	{
		try 
		{
            String messageFromServer = null;
            utworzStrumienie();
            wyslij();
        /////////////////////tutaj wystepuje bląd NullPointerException
            System.out.println("wyslalem ");

        } 
		catch (Exception ex) 
		{
            System.out.println(ex);;
        }
	}
}
0

Wielkie Dzięki :) Działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1