#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:
Наполовину испеченный ответ: замените их пробелами, количеством, которое вам нужно (нужны некоторые вычисления, если они используются помимо простого отступа строк).