Java GUI, a baza danych

0

Cześć

Proszę o pomoc przy problemie z javą. Mianowicie mam zbudować program w GUI, który będzie mi się łączyć z baza danych mysql i przy okazji jeszcze pobierać dane z pliku xml. Chcę się skupić na tym pierwszym. Napisałem program (graficzną), mam też kod tej bazy danych i właśnie mam problem z tą bazą. W programie mamy przycisk POŁĄCZ. Po jego kliknięciu program ma połączyć się z bazą, tekst przycisku zmienia się na ROZŁĄCZ, gdy znowu na niego klikniemy rozłącza z bazą. Nie wiem właśnie jak to zrobić. Mógłby ktoś pomóc trochę przy tym, jakaś rada czy coś? Czy to próbować w tej klasie co GUI, może tam gdzie baza i potem w niej wywołać tą klasę z gui? Z góry dziękuje i pozdrawiam.

Kod programów: http://pastebin.com/SUymMWRM

0

wywolac akcje po kliknieciu na przycisk, podczas ktorej zmieniasz setVisible(false) i w tym samym miejscu wstawiasz nowy przycisk, w ktorym tez robisz taka akcje, ze po kliknieciu sie chowa, a pojawia ten drugi przycisk.

2

Ja nie jestem doświadczonym programistą, ale uważam że stworzenie dwóch przycisków jest czystszym i bardziej przejrzystym rozwiązaniem, skoro każdy z nich ma inne zadanie, niż zmienianie mu tekstu, a później sprawdzanie jego wartości, żeby określić jaką akcję ma wykonać.

0

@Hepek masz mniej więcej pomysł na krótki kod takiego porównania?

0

Najprostsze rozwiązanie to stworzenie jak blab pisze dwóch przycisków, które będą wywoływać odpowiednią metodę klasy odpowiedzialnej za połączenie z bazą danych i wzajemnie się ukrywać/pokazywać. Będzie to jasna i prosta separacja na poziomie GUI. Oczywiście najlepiej jakbyś przygotował sobie odpowiedni komponent (oddzielną klasę), która zamknie w sobie te dwa przyciski.

Trudniejszą lecz bardzie elastyczną metodą jest wykorzystanie wzorca obserwatora. W takim układzie naciśnięcie przycisku będzie wywoływać odpowiedni kod wszystkich podpiętych do niego obserwatorów przekazując do nich informację o typie akcji. To co będą robić obserwatorzy mając informację co oznacza kliknięcie jest już ich prywatną sprawą. To rozwiązanie pozwoli ci na dodanie wielu różnych obserwatorów, którzy będą np. zarządzać elementami GUI, połączeniem z bazą danych czy kontrolować stan obiektów pobranych wcześniej. Jest to jednak metoda wymagająca trochę wprawy i obycia z Javą i nie polecam jej na początek.

0

Rozumiem, szukam w miarę takiego sposobu łatwego do zrobienia, a mam mały zastój przy tym. Myślałem nad tym, aby przy warunku: "if (polacz.isSelected())" sprawdzał program czy jest połączenie z bazą, ale nie wiem właśnie jak się dokładnie odwołać do tego stanu połączenia z bazy danych tamtej klasie.

0
glitcher napisał(a):

@Hepek masz mniej więcej pomysł na krótki kod takiego porównania?

Myślę, że klasa która inicjuje połączenie z bazą danych powinna udostępniać metodę typu isConnected() albo coś w tym stylu więc użyć jej i w zależności od wyniku wykonać połączenie lub je zamknąć :)

0

Co do tych przycisków nie dałoby się też przez ten warunek if (polacz.isSelected()) tych dwóch przycisków na zmianę wyświetlać? Dajmy na to: gdy przycisk połącz jest zaznaczony to automatycznie znika i ustawia też rozłącz jako widzialny, jednak wątpię w to troche.

0

Nie rozumiem co masz na myśli albo wydaje mi się, że pytasz o to co poradził Koziołek.

0

@Hepek jak mam rozumieć, metoda będzie zwracać wartości true albo false w przypadku połączenia lub nie?

0

@glitcher jeszcze prościej

class ButtonListener implements ActionListener{
  
  private boolean status = false;
  public void actionPerformed(ActionEvent e) {
     status = !status;        
     // tu kod propagujący do connectora i GUI managera
  }
}

Ale to jest to rozwiązanie nr 2 o którym pisałem w wersji bardzo prymitywnej.

1

Prócz ukrywania przycisków i zmiany tekstu na przycisku jest jeszcze moje ulubione rozwiązanie - cały czas widoczne są oba przyciski, ale jeden z nich jest nieaktywny (setEnabled(false)). Kod aktywujący (dezaktywujący) przycisk jest prostszy niż kod podmieniający przycisk.

0

Dzięki Panowie działa :)

0

Witam ponownie

Chciałbym jeszcze o coś was zapytać, tzn. mam w tym programie zaimplementować parsowanie xml, tylko póki co nie wychodzi mi to zbytnio. Ma ktoś pomysł jak to wcisnąć z do programu mniej więcej, żeby to bezkonfliktowo chodziło. Tak jak sposobem z połączeniem z bazą? Sam już nie wiem. Tu podaje plik gui wraz z polaczeniem z bazą i drugi plik z kodem parsowania xml. Prosiłbym o jakieś porady tudzież mnie jakoś nakierować :) Z góry dziękuje :)

http://4programmers.net/Pastebin/2851
http://4programmers.net/Pastebin/2852

Tak dokładnie ma to polegać na tym, że po nacisnieciu przycisku import xml ma zaimportowac z pliku xml dane do bazy :)

0

Wydaje mi się że prościej będzie użyć xstream
tut:
http://xstream.codehaus.org/tutorial.html.

0

mówisz, że zamiast parsowania xml? Tylko, że ja mam narzucone tą metodą a nie inna właśnie ;/

0

do obsługi xml-a ja zawsze używam DOM-aa z bibliotek org.w3c
jest to naprawdę proste wszystko wyciągasz sobie z xml-a pojedyńczymi komendami, no i nie trzeba żadnych zewnętrznych bibliotek dołączać
http://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html

0

Cześć wszystkim, małe pytanie co do kodu tego, użyłem tego parsera i nie chce chodzic coś, nie importuje tego xmla jak powinien. Drugi problem to 2 wyjatki. Przy naciskaniu przycisku wykonaj oraz zakoncz jesli wczesniej nic nie zrobiles, to wywala bład (program chodzi, ale tam w netbeansie sypnie expceptionami. Może też mi ktoś przy tych rzeczach jakoś pomóc skorygować tego parsera i wyjątki ;p byłbym wielce wdzięczny :)

KOD:
http://wklej.org/id/1264420/

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