Jestem projektowania aplikacji, która ma dwa widgety:Wyświetlanie zmiennych instancji różnych obiektów w JTable i modyfikując je
-A listę zawierającą dowolnych obiektów
-A stół, który wyświetla specyficzne właściwości aktualnie zaznaczonego obiektu
Celem jest możliwość wybrania obiektu z listy, przejrzenia właściwości i zmodyfikowania ich w razie potrzeby. Lista może zawierać obiekty różnych typów.
więc powiedzieć, że lista zawiera Vehicle
obiektów i Person
obiektów
public class Person
{
public String name;
public Integer age;
}
public class Vehicle
{
public String make;
public String model;
}
Jeśli kliknę na Person
obiektu, tabela wyświetli imię i wiek, i mogę przypisać nowe wartości do nich. Podobnie, jeśli kliknę obiekt Vehicle
, wyświetli on markę i model w tabeli i pozwoli mi je zmodyfikować.
I zostały uznane za pisanie metody jak
public String[] getFields()
{
return new String[] {"name", "age"};
}
która zwraca listę ciągów, które reprezentują zmienne instancji chcę patrzeć, i korzystać z niektórych metod refleksji do get/set im. Mogę zdefiniować tę metodę getFields
we wszystkich klasach, dzięki czemu mogę używać tej tabeli do obsługi dowolnych obiektów, które mogą być wrzucone na listę.
Ale czy istnieje sposób zaprojektowania tego, aby nie uciekać się do refleksji? Obecne podejście wydaje się złym projektem.
Z drugiej strony mógłbym utworzyć wiele obiektów TableModel
, po jednym dla każdej możliwej klasy. Tabela będzie wiedzieć, jakie wiersze wyświetlić i jak uzyskać dostęp do zmiennych instancji obiektu. Ale za każdym razem, gdy dodawana jest nowa klasa, musiałbym zdefiniować nowy model tabeli, który również brzmi jak słaby projekt.
1+ i dziękuję za pomocną odpowiedź. –