Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Java] Prośba o spojrzenie na całość fachowym okiem
Forum PHP.pl > Forum > Przedszkole
phpion
Witam,
na wstępie kilka uwag.
1. Nie wiem czy wybrałem dobre subforum - w razie czego proszę o przeniesienie tematu na odpowiednie.
2. Wiem, że to forum PHP ale równocześnie wiem, że jest tu kilku programistów Java i to do nich kieruję swój post.

Więc. Na zaliczenie mam napisać program w Javie. Wymyśliłem sobie, że będzie to program do wykonywania poleceń SQL - ręcznie wpisujemy np. SELECT... i program wyświetla nam rezultat zapytania.

Na razie mam takie pliki:
Main.java - odpala cały program
DbConnection.java - docelowo ma wykonywać operacje na bazie (na razie wersja minimalistyczna)

main_window/MainWindow.java - główne okno programu. Aktualnie zawiera menu (main_window/MainMenuBar.java) oraz pasek statusu (main_window/MainStatusBar.java).

connection_window/ConnectionWindow.java - okienko do podania danych do połączenia (dojdzie jeszcze wybór typu bazy danych). Wywoływane z MainWindow spod klasy wewnętrznej ConnectAL.

query/QueryField.java - pole do wpisywania zapytań SQL zawierające przechwytywanie wciśniętych klawiszy i odpowiednie reakcje przy strzałce w górę/dół i przy wciśnięciu [ENTER]. Dodatkowo zawiera obiekt query/QueryMemory.java przetrzymujący X ostatnich zapytań SQL.

Ok, teraz w czym problem.
Otóż z tego co się orientuję to to okienko ConnectionWindow powinno ustawiać się na środku okna z którego zostało wywołane. Aktualnie ustawia się w lewym górnym rogu. Coprawda parametry przekazywane są poprawnie (do okna głównego) ale obawiam się czy w przyszłości nie spotka mnie jaka niespodzianka.
Druga sprawa to taka, że w zasadzie wszędzie korzystałbym z singletona. Aktualnie właśnie to okienko do połączenia jest w formie singletona - nie wiem czy to dobre rozwiązanie ale chociaż działa smile.gif w książce "Core. Java 2. Podstawy" wywoływane jest jako zwykła klasa prywatna wewętrzna okna głównego (str. 505). Ja dodatkowo musiałem zmienić widoczność na publiczną i przekazywać obiekt tej klasy do konstruktora ConnectionWindow. (// kurde, ale mieszam).
Trzecia sprawa: do okna głównego planuję dołożyć obiekt QueryField oraz JTable do wyświetlania rezultatów zapytań. Tyle tylko, że QueryField przechwytuje [ENTER] i wtedy powinien wykonywać zapytanie. Do tego potrzebuje DbConnection - na szczęście jest to singleton więc luz. Ale co z wyświetleniem rezultatu? Przecież obiekt tabeli będzie się znajdował w oknie głównym. Znowu singleton żeby go zaktualizować? Coś za dużo singletonów mi się tu rodzi...

Ogólnie prosiłbym o spojrzenie na te kody i wytknięcie wszystkich błędów oraz, co najważniejsze, czy to będzie działać jak planuję biggrin.gif

Źródła: http://phpworkstation.com/src.zip

Z góry naprawdę wielkie dzięki!
pion
splatch
Singletony są złe.. Rozwiąż ten problem przekazując instancje tego, czego potrzeba tam gdzie trzeba. Być może przydatne będzie stworzenie czegoś w stylu "konktekstu".

W przypadku gdy korzystasz z JInternalFrame/JDesktopPane możesz ustawić pozycję "ręcznie". Sposób na centrowanie JFrame, który zachowa się tak samo w przypadku JInternalFrame (wystarczy zmienić screenSize na rozmiar desktop pane'a).
Kod
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int top = (screenSize.height - windowSize.height) / 2;
        int left = (screenSize.width - windowSize.width) / 2;
        setLocation(left, top);
phpion
Dzięki za odpowiedź, Mam nadzieję, że wszystko będzie działalo (byle działo bo nie mam za dużo czasu aby bawić się w dopracowywanie całości) i że nie okaże się nagle, że jakiś obiekcik nie ma możliwości komunikacji z innym.
smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.