2015-08-06 4 views
2

Я пытаюсь изучить JTables TableCellRenderer, и я кое-что не понимаю. Может быть, один из вас может мне помочь.TableCellRenderer со слишком маленькой колонкой не имеет суффиксов точек

Пожалуйста, посмотрите на этом примере я нашел в Интернете: http://www.java2s.com/Tutorial/Java/0240__Swing/implementsTableCellRenderer.htm

Это простой компилируемый блок, чтобы продемонстрировать использование TableCellRenderer.

Но теперь, с определенным рендерером, когда я сжимаю столбцы, заголовки остаются туловищем и получают окончание «...». Значения только «скрыты», потому что места недостаточно. «...» отсутствуют. Пожалуйста, смотрите изображение.

enter image description here

Есть ли возможность получить «...» для значения ячеек?

+1

Какой код для 'TableCellRenderer', потому что он не похож на по умолчанию ... – MadProgrammer

+1

Это сомнительный пример из самого факта, что он создает ..' JTextField editor = new JTextField(); 'каждый раз вызывается метод get get renderer. Тогда есть то, что оно использует текстовое поле, а не (по умолчанию) 'JLabel' без видимых причин. Лучше всего использовать примеры из [Учебного руководства Swing на рендерерах] (https://docs.oracle.com/ JavaSE/учебник/uiswing/компоненты/table.html # визуализатор). –

+1

@MadProgrammer Это текстовое поле (из страшного примера). –

ответ

3

как другие прокомментировали, ваш рендер изображения возвращает JTextField. в качели, эта реализация строки этого скрипта есть в классе под названием SwingUtilities2.

public static String clipString(JComponent var0, FontMetrics var1, String var2, int var3) 

Но эта логика строки клипов будет использоваться только некоторыми компонентами. ex: Button, RadioButton, TabPane, MenuItem, Label.

+0

Спасибо, но я не понимаю, почему строки обрезаны, если не установлен Renderer. Так что, без Renderer или с JLabels это работает. Хорошо знать. Но в моем проекте у меня были бы оба. Любая идея, как добавить эту логику в (самостоятельно определенный) TextField? – nikmaster

+0

«Нет средства визуализации» означает, если мы не указали рендер. то таблица будет инициализирована с помощью DefaultTableCellRenderer, который является подклассом JLabel. Я не вижу причин для использования TextField в качестве средства визуализации. Может ли у вас более конкретная информация о требовании? – hunter

+0

Моя проблема в том, что у меня довольно сложная структура с разными подклассами TextField. Поэтому было бы проще расширить TextField это поведение, если бы это было возможно. – nikmaster