HTML-форматированный текст в компонентах Swing не отображается - PullRequest
2 голосов
/ 27 апреля 2011

Я недавно столкнулся со странной ситуацией; 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;nbsp;&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);
}

1 Ответ

4 голосов
/ 27 апреля 2011

Попробуйте исправить, показанное внизу Ошибка ID 7008526 .

Так я реализую исправление в апплете, использующем рендеринг HTML.

public void init() {
    // Solves an applet/HTML parsing bug.
    ParserDelegator parserDelegator = new ParserDelegator();
    System.out.println("parserDelegator set: "+ parserDelegator);

Путем создания явного делегата синтаксического анализатора и сохранения ссылки на него оно никогда не воссоздается и так не вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...