2010-11-12 22 views
5

Chciałbym stworzyć interaktywną JTable. W tym celu chciałbym dodać JPanels w komórkach tabeli. Gdy JPanels znajdują się w komórkach, mogę dodawać różne komponenty do JPanels, dzięki czemu tabela jest interaktywna. Każdy JPanel może mieć różne komponenty. Byłoby to możliwe i wystarczy utworzyć tylko 1 edytor komórek tabeli i 1 oferenta komórek tabeli. Czy ktoś wie o lepszy sposób to zrobić?Interactive JTable

Dzięki

EDYCJA: Dziękuję za odpowiedzi. W rzeczywistości mam już framework, którego używam. Potrzebowałem tylko JTable, który użytkownicy mogą przeciągać i upuszczać obrazy, odtwarzać filmy, wyświetlać wykresy, itp. Mam już funkcjonalność do robienia tych rzeczy, po prostu potrzebowałem JPanela, aby je dodać. Chciałem, aby był wyświetlany w JTable, aby komórki mogły być sortowane, przenoszone, dodawać/usuwać wiersze/col i mieć dobrą strukturę. Nie mogłem go uruchomić przy użyciu JTable, więc postanowiłem stworzyć własne. To tylko JPanel, który zawiera mniejsze JPanele (komórki tabeli) przy użyciu GridLayout. Działa wystarczająco dobrze dla moich pupili. Tylko ból, aby przepisać całą funkcjonalność od podstaw, jaką ma stół.

+0

Chciałem także osiągnąć jako cel ... Niestety, kiedy użyłem przycisku wewnątrz jpanela, który znajduje się wewnątrz komórki jtable, ... przycisk j nie daje normalnej interakcji (anim). jak to zrobić? – gumuruh

Odpowiedz

5

To jest trudne. JTable faktycznie używa renderers komórek tylko do malowania zawartości komórki. Zaleciłbym sprawdzenie, czy łatwiejsze byłoby rozwiązanie gridlayout zapakowane w scrollpane.

+0

gridlayout na scrollpane, co masz na myśli? @ordnungswidrig? – gumuruh

3

Wygląda na to, że próbujesz użyć JTable jako architektury dokowania. Zakładając, że tak jest, lepiej jest użyć czegoś takiego, jak MyDoggy lub JDock, które pozwalają rozłożyć GUI na wiele obszarów podzielonego panelu. W tym kontekście alternatywą może być

+0

Po prostu ciekawy czy wolisz MyDoggy od FlexDock (https://flexdock.dev.java.net/)? –

+0

@Alex: Obawiam się, że nie używałem Flexdock, więc nie mogę ich porównać. Ale to sprawdzę. – Adamski

1

JSplitPane: jedno okno będzie zawierało JTable, a drugie wyświetla rozszerzone szczegóły wybranego wiersza. Konkurs przykład przy użyciu GridLayout jest pokazany here.