2013-03-22 32 views
6

Używam Nimbus L & F. Próbuję zmienić rozmiar czcionki globalnie dla wszystkich JTable za pomocą następującego kodu:Jak zmienić globalną wysokość JTable?

NimbusLookAndFeel nimbus = new NimbusLookAndFeel(); 
UIManager.setLookAndFeel(nimbus); 
UIDefaults d = nimbus.getDefaults(); 
d.put("Table.font", new FontUIResource(new Font("SansSerif", Font.PLAIN, 18))); 

To działa, wszystkie wiersze JTable w aplikacji są przy użyciu nowej czcionki . Używam większego rozmiaru czcionki, aby tabela była bardziej czytelna w dużej rozdzielczości.

Ale problem polega na tym, że wysokość wiersza nie została zmieniona, co powoduje obcięcie czcionki. Próbowałem następujący kod:

d.put("Table.contentMargins", new Insets(50,50,50,50)); 
d.put("Table:\"Table.cellRenderer\".contentMargins", new Insets(50,50,50,50)); 

Ale nic nie zmieniło w wyświetlanych tabelach.

Czy mogę zmienić wysokość wiersza globalnie bez wywoływania setRowHeight() dla każdej instancji JTable?

+0

Czy próbował tego [Rozwiązanie] (http://stackoverflow.com/questions/1783607/auto-adjust-the-height-of-rows-in-a- jtable) przez camickr. – Amarnath

+0

@ nie sądzę - pytanie dotyczyło pojedynczych wysokości rzędów w jednym przypadku konkretnego stołu. To pytanie (jak rozumiem to przynajmniej :-) dotyczy domyślnej wysokości wiersza dla wszystkich wystąpień tabeli – kleopatra

+0

Dzięki za odpowiedź. To jest naprawdę przydatne. Tak, potrzebuję domyślnej wysokości wiersza dla wszystkich wystąpień tabeli. – user2198754

Odpowiedz

6

Zasadniczo nic nie ma intencji. Odpowiedni kod-komentarz w BasicTableUI:

// JTable's original row height is 16. To correctly display the 
// contents on Linux we should have set it to 18, Windows 19 and 
// Solaris 20. As these values vary so much it's too hard to 
// be backward compatable and try to update the row height, we're 
// therefor NOT going to adjust the row height based on font. If the 
// developer changes the font, it's there responsability to update 
// the row height. 

Na jasną stronę, niektóre LAFs jak f.i. Nimbus szanować własność UI rowHeight:

UIManager.put("Table.font", new FontUIResource(new Font("SansSerif", Font.PLAIN, 28))); 
// here simply the font height, need to do better 
int height = 28; 
UIManager.put("Table.rowHeight", height); 
+0

Proszę, czy możesz mi zasugerować, czy moje podejście jest poprawne czy nie? – Amarnath

+0

To jest pytanie do mojej odpowiedzi, właściwość "Table.rowHeight" pozwala mi ustawić domyślną wysokość wiersza dla wszystkich JTable w mojej aplikacji. – user2198754

+0

Dzięki. +1 do pytania i odpowiedzi. Zawsze uczę się czegoś z twoich komentarzy i odpowiedzi. – Amarnath