Problem z przypisaniem operacji pod przycisk w GUI

0

Witam.
Jestem na razie zielonym użytkownikiem, zgłębiającym wiedzę z dziedziny programowania w javie poprzez środowisko NetBeans.
Ogólnie rzecz biorąc jestem w trakcie tworzenia projektu do szkoły, tj. programu do spedycji przesyłek. Zasada jego działania jest prosta:

  1. Spedytor w odpowiednim oknie dodaje poprzez wypełnienie kilku pól tekstowych informacje o nowej przesyłce (numer paczki, nadawce, odbiorcę, miejsce nadania, miejsce doręczenia oraz nazwisko kuriera) - te dane, po naciśnięciu odpowiedniego przycisku mają zostać zapisane w ArrayList.
  2. Użytkownik z innego okna ma wpisać numer przesyłki, który zostanie wyszukany we wspomnianej ArrayList oraz w przypadku odnalezienia - wyświetlony wraz z pozostałymi informacjami w osobnym oknie.

Mój problem polega na tym, iż nie potrafię przypisać do przycisku w gui akcji związanej z dodaniem przesyłki (przesłaniem informacji z sześciu pól do ArrayList). Cała funkcja dodawania paczki zdefiniowana jest w innej klasie (w oddzielnym pliku). Czy mógłby ktoś mi pomóc?

Poniżej umieszczam kod do klasy zawierającą zdefiniowaną ArrayList, funkcję dodawania nowych paczek oraz funkcje wyszukiwania:

 package spedycjatest;

import java.util.ArrayList;


public class Magazyntest {
    ArrayList<Paczki> paczki_magazyn = new ArrayList<Paczki>();
    
    
    public void dodaj_przesylke(Integer _numer_przesylki, String _nadawca, String _odbiorca, String _miejsce_nadania, String _miejsce_doreczenia, String _nazwa_kuriera){
paczki_magazyn.add(new Paczki(_numer_przesylki,_nadawca,_odbiorca,_miejsce_nadania,_miejsce_doreczenia,_nazwa_kuriera));
    
    }
    
public int wyszukaj(int _numer_przesylki){

  for (int i = 0; i < paczki_magazyn.size(); i++){
    if (paczki_magazyn.get(i).getNumer_przesylki()==_numer_przesylki){ 
        System.out.println(paczki_magazyn.get(i).numer_przesylki);
        return i;
    }
 }
  return -1;

} 

  

} 
0

Ale z czym dokładnie masz problem? Po pierwsze, jeśli chcesz użyć tych metod to w jakiś sposób instancja klasy Magazyntest musi być dostępna z GUI czyli musisz ją wrzucić do odpowiedniej klasy rozszerzającej JFrame, JPanel, cokolwiek lub wrzucić instancję innej klasy, ale tak żeby dało się z niej dojść do instancji Magazyntest.

0

No właśnie nie potrafię skonstruować polecenia pod przyciskiem, aby wykonywał polecenie dodaj_przesylke z klasy Magazyntest.

Wpisuję tam :

Magazyntest.dodaj_przesylke(_numer_przesylki,_nadawca,_odbiorca,_miejsce_nadania,_miejsce_doreczenia,_nazwa_kuriera);

lecz wyrzuca mi błąd:

*non-static method dodaj_przesylke(Integer, String, String, String, String, String) cannot be referencend from a static context *

0

Jak już napisałem, musisz mieć instancję klasy Magazyntest (konkretnie to referencję, bo w Javie dostęp do obiektów jest tylko przez referencje), jeśli chcesz wywoływać jej metody niestatyczne. A mutowalnych staticów unikaj jak ognia.

0

Widzę, że pierwsza styczność z programowaniem obiektowym. Ja lata temu przy takim błędzie robiłem wszystko statyczne, byleby działało. ;D

Kolega wyżej ma rację. Dodaj do swojej klasy taką metodę:

public static void main(String [] args)
{
Magazyntest mt = new Magazyntest();
// cos tam robisz...
mt..dodaj_przesylke(_numer_przesylki,_nadawca,_odbiorca,_miejsce_nadania,_miejsce_doreczenia,_nazwa_kuriera);
//itd. masz obiekt mt i na nim robisz co chcesz
}

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