Я недавно столкнулся со странной ситуацией; HTML-форматированный текст в моих компонентах Swing не отображается. Я искал похожие вопросы и нашел один , но, похоже, он не решается в решении, которое применимо к моему делу (даже если есть принятый ответ)
Я также играл с классом HtmlDemo
в уроках Oracle . Код, скопированный оттуда в мой проект, не работает так же, как и мой собственный код. Однако, если я скомпилирую весь проект или запусту его через JWS, все будет хорошо.
Я пытался выделить проблему с меньшими случаями (такими как прокомментированные JLabel
s), но все еще не радость. В настоящее время я действительно озадачен; почти уверен, что я где-то упускаю деталь, но не могу найти ее.
Ниже приведен метод, который возвращает JScrollPane
для помещения в JTabbedPane
, который должен отображать соответствующие фрагменты кода. Да, и кстати я в настоящее время использую Sun JDK 1.6.0 Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Любая помощь / комментарии приветствуются!
JTabbedPane tabbedPane = new JTabbedPane();
JComponent panel1 = makeInfoPanel(v);
tabbedPane.addTab("Node Info", null, panel1,"info");
tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
JComponent panel2 = makeDetailsPanel(v);
tabbedPane.addTab("Details", null, panel2,"other info");
tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);
protected JComponent makeInfoPanel(Node v) {
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(400,200));
panel.setLayout(new GridLayout(0,1));
//JLabel title = new JLabel("<html><b><u>T</u>wo</b><br>lines</html>");
String msg = "Below are the items this node represents";
//JLabel title = new JLabel("<html><font size=-2>" + msg +"</font></html>");
JLabel title = new JLabel(msg);
title.setHorizontalAlignment(JLabel.LEFT);
panel.add(title);
JLabel stuff = new JLabel();
StringBuilder labelText = new StringBuilder("<html><h3>Items</h3>");
for(Stuff s : v.getStuff()){
labelText.append("<font size=8><i>" + s.getName() + "</i></font>");
labelText.append(" nbsp; <font size=6>" + s.getDb().toUpperCase() + "</font>");
labelText.append("<br>");
}
labelText.append("</html>");
stuff.setText(labelText.toString());
panel.add(stuff);
return new JScrollPane(panel);
}