2012-11-05 71 views
2

中的文字我有這個奇怪的刺激情況。我有插入文本的JTextPane。與文本Alogn,也有鏈接作爲JLabels。下面是一個快照: enter image description hereJLabel不符合J

現在的問題是:爲什麼JLabel(一個HTML鏈接)不與同一行上的文本平行?它略低於。 文字是 「宋體」 和字體的JLabel 14:

label.setForeground(Color.blue);  
label.setFont(new Font("Check",Font.BOLD,14));     
makeLinkable(label, new LinkMouseListener()); 

請幫助。背後JLabel中的鏈接是:<html><a href="file:///C:/Users/Jatin/Documents/NetBeansProjects/ImageRename/log/2012-10-5%20Time%2013-52-1.csv"> file:///C:/Users/Jatin/Documents/NetBeansProjects/ImageRename/log/2012-10-5%20Time%2013-52-1.csv</a></html>

+0

貌似的HTML是不一樣的你的快照。快照中'a'標記的值爲'2012-10-5時間13-52-1',但不是'file:/// C:/ Users/Jatin/Documents/NetBeansProjects/ImageRename/log/2012-10 -5%20Time%2013-52-1.csv'。 – cubanacan

+0

它基本上是一樣的,只是文字不同而已。從不同的跑步拍攝的照片。謝謝。 – Jatin

+0

然後,可能是佈局問題。你能提供簡單的例子來運行嗎? – cubanacan

回答

2

在JComponent的#setAlignmentY看看(...):java - How to appropriately adding JLabel to JEditorPane? - Stack Overflow

import java.awt.*; 
import javax.swing.*; 
public class BaselineTest { 
    public JComponent makeUI() { 
    JLabel label1 = makeLabel(); 
    JLabel label2 = makeLabel(); 
    String s = "For detailed infomation refer: "; 
    JTextPane textPane = new JTextPane(); 
    textPane.replaceSelection(s); 
    textPane.insertComponent(label1); 

    Dimension d = label2.getPreferredSize(); 
    int baseline = label2.getBaseline(d.width, d.height); 
    label2.setAlignmentY(baseline/(float)d.height); 
    textPane.replaceSelection("\n\n"+s); 
    textPane.insertComponent(label2); 

    return new JScrollPane(textPane); 
    } 
    private static JLabel makeLabel() { 
    JLabel label = new JLabel("2012-10-05"); 
    label.setForeground(Color.BLUE); 
    label.setOpaque(false); 
    return label; 
    } 
    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override public void run() { 
     createAndShowGUI(); 
     } 
    }); 
    } 
    public static void createAndShowGUI() { 
    JFrame f = new JFrame(); 
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    f.getContentPane().add(new BaselineTest().makeUI()); 
    f.setSize(320, 240); 
    f.setLocationRelativeTo(null); 
    f.setVisible(true); 
    } 
}