2011-04-27 43 views
2

我最近遇到了奇怪的情况;我的Swing组件中的HTML格式文本不显示。我已经搜索了类似的问题,并发现one,但它似乎并没有解决适用于我的情况的解决方案(即使有一个公认的答案)Swing组件中的HTML格式文本不显示

我也玩过HtmlDemoOracle tutorials。从那里复制到我的项目的代码不起作用,就像我自己的代码没有。但是,如果我编译整个项目,或通过JWS运行它,一切看起来都不错。

我试图找出小案例的问题(如评论JLabel s),但仍然没有喜悦。目前我真的很困惑;几乎可以肯定,我错过了某处的细节,但似乎无法找到它。

下面是一个方法,返回JScrollPane放置在JTabbedPane,应该描述代码的相关部分。哦,顺便说一句,我目前正在使用太阳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); 
} 
+0

什么是'Stuff'和'Node v'? – Favonius 2011-04-27 17:59:48

+0

@Favonius:他们是两个自定义类,我有一个树形层次结构,它由'Node'组成,其中每个节点都指向一些东西,比如'Stuff'。我想要做的是添加在点击节点时弹出的上下文信息框。 – posdef 2011-04-28 07:25:11

回答

4

尝试在Bug ID 7008526底部显示的修复。

这就是我如何在使用HTML呈现的applet中实现修复。

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

通过创建一个明确的解析器委托和存储对它的引用,这是从来没有重建,因此不会引发错误。

+0

你能说,修复是什么?该修复似乎存储的错误不再可用(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6990651)。谢谢! – guerda 2013-08-16 12:12:41

+1

@guerda查看编辑。 – 2013-08-16 14:47:02