Пули неупорядоченного списка выглядят неровно в JEditorPane
Я использую неупорядоченный список HTML для отображения текста в JEditorPane. Пример HTML выглядит следующим образом:
<ul><li>Cautious</li>
<li>Curious</li>
</ul>
Это работает все хорошо, но странным образом пули, генерируемые <li>
не выглядите так же, как текст рядом с ним. (Запуск Mac OS 10.7.5, если это имеет значение). Круглые пули выглядят блочными и неровными:
Нормальный зум:
Увеличено в:
Как особенно очевидно, когда он увеличен, это просто блок пикселей, которые не являются симметричными и не имеют какой-либо формы сглаживания, что приводит к менее чем убедительной круговой пуле. По сравнению с текстом рядом с ним, он выглядит "не совсем", даже при нормальном увеличении.
Есть ли способ, которым я могу это исправить?
РЕДАКТИРОВАТЬ: использование символа • (опция + 8 на Mac) создает меньшую точку маркера в тексте, которая не выглядит пиксельной. Я мог бы, конечно, вставить этот символ вручную, а не используя <ul><li>
, но я бы хотел использовать неупорядоченный список HTML, если смогу.
2 ответа
Используйте подсказки рендеринга, чтобы включить свойство сглаживания KEY_ANTIALIASING
,
Вы устанавливаете некоторые подсказки рендеринга глобально, но это, кажется, не работает для KEY_ANTIALIASING
так что вам нужно переопределить paint()
метод JEditorPane
,
public class HTMLTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
String html = "<ul><li>Cautious</li><li>Curious</li></ul>";
JEditorPane pane = new JEditorPane("text/html", html) {
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
super.paint(g2d);
g2d.dispose();
}
};
pane.setVisible(true);
JOptionPane.showMessageDialog(null, pane);
}
});
}
}
Вам нужно изменить точки пули. Создайте изображение более привлекательной маркированной точки, а затем добавьте CSS на панель редактора, чтобы оно использовало ваше новое изображение маркера.
JEditorPane pane = new JEditorPane();
String u = "C:/path/to/bullet.png";
HTMLEditorKit htmlEditorKit = (HTMLEditorKit) pane.getEditorKit();
StyleSheet styleSheet = htmlEditorKit.getStyleSheet();
styleSheet.addRule(String.format("ul{list-style-image:url(%s);margin:0px 20px;", u));