Настройка размера вкладки в TableCellRenderer

#java #swing #text

Вопрос:

У меня есть класс , который расширяется DefaultTableCellRenderer , который отображает строки моноширинным шрифтом определенного цвета. По умолчанию кажется, что вкладки вообще не отображаются (0 пробелов). Как я могу установить размер вкладок и/или заставить их отображаться?

правки: Под «вкладками» я подразумеваю символы табуляции, которые я просто хотел бы отобразить в виде некоторого количества пробелов. Переписать строку-это вариант, но я решил, что есть лучший способ.

Комментарии:

1. Какие вкладки? В ячейке таблицы нет вкладок.

2. Ваш комментарий старше (неотредактированного) вопроса. Как это возможно?

3. О, подождите, он имеет в виду «символы вкладок» — я думал, он имел в виду вкладки jtabbedpane.

Ответ №1:

DefaultTableCellRenderer является а JLabel и делает то, что а JLabel будет делать. Я предлагаю вам сделать себе обычай TableCellRenderer и вернуть JPanel букву » а «с двумя или более JLabel буквами «s», расположенными соответствующим образом. В качестве альтернативы используйте a JComponent , который переопределяет paintComponent , чтобы рисовать так, как вы хотите.

Примечание: попытка использовать HTML в визуализаторах-действительно плохая идея с точки зрения производительности.

Комментарии:

1. Именно почему и когда использование HTML является плохой идеей с точки зрения производительности? Предположительно, у вас есть какие-то жесткие и быстрые правила?

2. Просто для уточнения; у нас есть JTables с более чем 100 000 строками и визуализаторами, которые активно используют HTML, таблицы, шрифты, цвета и все остальное.

3. Каждый раз, когда вызывается getTableCellRenderer, HTML устанавливается на JLabel, анализируется и выполняется вся закулисная работа. Это, как правило, происходит очень медленно.

4. действительно ли DefaultTableCellRenderer делает HTML-подобные вещи, а-ля JTextPane? Когда я сказал шрифт и цвет, я просто имел в виду, что я вызываю setFont() и setBackground (), чтобы получить моноширинный шрифт и соответствующий цвет фона.

5. Да, просто начните текст метки с <html>, как и с другими JLabels.

Ответ №2:

Наполовину испеченный ответ: замените их пробелами, количеством, которое вам нужно (нужны некоторые вычисления, если они используются помимо простого отступа строк).