[Swing] wyświetlanie kwadratow z możliwością wczytywania do nich liter

0

Witam,
mam ostatnią cześć projektu w której muszę napisać GUI do wyświetlania krzyżówek. Pierwszy raz mam styczność z Java Swing i nie mam pojęcia jak to zrobić.

Powiedzmy, że przechowuję krzyżówkę w dwuwymiarowej tablicy char i chodzi mi o to żeby wyświetlić pustą krzyżówkę i dać użytkownikowi możliwość wpisywania liter w poszczególne kwadraty.

Jak się za to zabrać? Tworzyć w pętli pola tekstowe czy coś takiego?

1

A nie da rady wykorzystać do tego JTable jakiegoś?

1

Kiedyś pisałem sobie program do rozwiązywania sudoku i wyglądało to tak, że rysowałem najpier tło, potem 9x9 pól typu label. Możesz zrobić to tak jak ja (musisz dodać obsługę zdarzeń, żeby przy kliknięciu wyskakiwało ci małe okienko pokazujące, co można wpisać) ale w twoim przypadku to jest raczej średnie rozwiązanie. Lepiej zrobić to tak jak piszesz, czyli dodać ileśtam pól tekstowych, z których część będzie nieaktywna (czarne pola w krzyżówce), a reszta wyśrodkowana i ograniczona do jednej litery. Swing twoim przyjacielem w tym przypadku, ewentualnie JavaFX 2.0 jeśli jesteś bardziej ogarnięty i masz trochę czasu do zmarnowania.

0

dzięki. Próbowałem to zrobić za pomocą tabeli bo wydawało się łatwiejsze, ale mam jeszcze problem z wyświetlaniem. Mam NetBeans i stworzyłem nowy plik gui - JFrame, na którym dałem jeden przycisk. Po jego naciśnięciu powinna pojawiać się tabela, ale nic się nie dzieje.

Kod kliknięcia przycisku:

	Tablica t = new Tablica(5);  // w środku zmienna board[5][20] zawierająca Stringi i wymiary tablicy
        
	// kopiowanie stringów do zmiennej typu Object[][]
	// by użyć konstruktora JTable(Object[][] rowData, Object[] columnNames)
	Object[][] data = new Object[t.height][t.width];
        for(int i=0; i<t.height; i++)
            for(int j=0; j<t.width; j++)
               data[i][j] = t.board[i][j]; 

	// nazwy kolumn
       String[] cnames = {"c1","c2","c3","c4","c5"};

       // tworzenie tabeli
       JTable table = new JTable(data, cnames);
       JScrollPane scrollPane = new JScrollPane(table);
       this.add(scrollPane);
	// niestety nic się nie wyświetla
0

Tak się tylko zastanawiam, czy nie trzeba jeszcze setVisible(true) ? Ale nie używałem JTable, to nie wiem, taka tylko myśl.

0

dodałem setVisible(true) w Table i ScrollPane, nie pomogło

1

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html
tu masz wszystko wyjaśnione...Zwróć uwagę na to jakie konstruktory możesz wykorzystać w klasie JTable.
Na początek spróbuj bez scrolla stworzyć tabele i zobacz jakie wartości masz w tablicy data(czy one w ogóle tam są ).

0

dzięki wszystkim za pomoc. Korzystając z tych przykładów jakoś to zakombinowałem. Pomogło zrobienie modelu tabeli, a wyświetlam ją w javaInternalFrame.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.