2013-03-22 3 views
6

Я использую Nimbus L & F. Я пытаюсь изменить размер шрифта глобально для всех JTable, используя следующий код:Как изменить высоту строки JTable глобально?

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

Он работает, строки все для JTable в заявке, используя новый шрифт , Я использую больший размер шрифта, чтобы сделать таблицу более читаемой в большом разрешении.

Но проблема в том, что высота строки не изменилась, в результате чего шрифт был усечен. Я пробовал следующий код:

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

Но это ничего не меняло в отображаемых таблицах.

Могу ли я изменить высоту строки по всему миру без вызова setRowHeight() для каждого экземпляра JTable?

+0

ли вы пытались это [решение] (http://stackoverflow.com/questions/1783607/auto-adjust-the-height-of-rows-in-a- jtable) от camickr. – Amarnath

+0

@che не думайте так - этот вопрос касался отдельных высот ряда в одном экземпляре конкретной таблицы. Этот вопрос (как я понимаю, по крайней мере :-) касается высоты строки по умолчанию для всех экземпляров таблицы – kleopatra

+0

Спасибо за ответ. Это действительно полезно. Да, мне нужна высота строк по умолчанию для всех экземпляров таблицы. – user2198754

ответ

6

В принципе, нет намерений. Соответствующий кодовый комментарий в 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. 

На яркой стороне некоторые LAF, такие как f.i. Nimbus уважать щ свойство для 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

Пожалуйста, можете ли вы предложить мне, подходит ли мой подход или нет? – Amarnath

+0

Это вопрос к моему ответу: свойство «Table.rowHeight» позволяет мне устанавливать высоту строки по умолчанию для всех JTable в моем приложении. – user2198754

+0

Спасибо. +1 на вопрос и ответ. Я всегда что-то узнаю из ваших комментариев и ответов. – Amarnath

Смежные вопросы