我最近遇到了奇怪的情況;我的Swing組件中的HTML格式文本不顯示。我已經搜索了類似的問題,並發現one,但它似乎並沒有解決適用於我的情況的解決方案(即使有一個公認的答案)Swing組件中的HTML格式文本不顯示
我也玩過HtmlDemo
類Oracle 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; <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 2011-04-27 17:59:48
@Favonius:他們是兩個自定義類,我有一個樹形層次結構,它由'Node'組成,其中每個節點都指向一些東西,比如'Stuff'。我想要做的是添加在點擊節點時彈出的上下文信息框。 – posdef 2011-04-28 07:25:11