【发布时间】:2011-08-14 00:51:06
【问题描述】:
我最近遇到了奇怪的情况;我的 Swing 组件中的 HTML 格式文本不显示。我搜索了类似的问题,找到了one,但它似乎无法在适用于我的案例的解决方案中解决(即使有一个公认的答案)
我还玩过Oracle tutorials 上的HtmlDemo 类。从那里复制到我的项目的代码不起作用,就像我自己的代码一样。但是,如果我编译整个项目,或者通过 JWS 运行它,一切看起来都很好。
我试图用较小的案例(例如评论的JLabels)来隔离问题,但仍然没有乐趣。目前我真的很困惑;几乎可以肯定我错过了某个地方的细节,但似乎无法找到它。
下面是一个返回JScrollPane 的方法,该JTabbedPane 应该描述相关的代码片段。哦,顺便说一句,我目前正在使用 Sun JDK 1.6.0 Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
感谢任何帮助/cmets!
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);
}
【问题讨论】:
-
什么是
Stuff和Node v?? -
@Favonius:它们是两个自定义类,我有一个由
Nodes 组成的树状层次结构,其中每个节点都引用许多事物,例如Stuff。我要做的是添加在单击节点时弹出的上下文信息框。