2012-07-25 122 views
3

我想將JLabel的內容方向從右向左更改。
JLabel將內容爲HTML和我測試所有這些(&工作沒有他們!):從右向左製作JLabel html內容

lbl.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
    lbl.setHorizontalTextPosition(JLabel.RIGHT); 
    lbl.setHorizontalAlignment(JLabel.RIGHT); 

我應該怎麼做呢?

感謝

+0

是否要將文本對齊到右側或將文本從右向左讀取? – MadProgrammer 2012-07-25 20:35:17

+0

@MadProgrammer:兩者! – RYN 2012-07-25 21:43:16

回答

5

使用div元素設置文本的對齊和寬度:

<html><div align=right width=100px>text</div></html> 
+0

這是一個有趣的黑客。這太糟糕了,它並不總能給出正確的結果,例如,如果字符串末尾有標點符號。 – Trejkaz 2014-08-08 05:21:45

3

你的意思標籤dir="rtl"

enter image description here

不能直接與JLabelJTextArea,根據BugParade code

import java.awt.ComponentOrientation; 
import java.awt.GridLayout; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextPane; 
import javax.swing.UIManager; 

public class RightToLeft { 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       String str =("<html > <head> <title>Test</title> <style> </style> </head> <body> <div align=right>" 
         + " <p><b><font face=Arial color=#5078A8><span lang=he>Hebrew Test</span></font></b></p> " 
         + "<p><span lang=he><font face=Arial size=2> HTML Table</font></span></p> <table dir =rtl " 
         + "border=1 cellpadding=10 width=62% id=AutoNumber1 bordercolorlight=#FFFFFF bordercolordark=#FFFFFF> " 
         + "<tr> <td width=28% valign=top bgcolor=#D0E4F8 class=cellclass><font face=Arial size=2 " 
         + "color=#687C98><b>1 2 3</b></font></td><td width=72% valign=top bgcolor=#D0E4F8 dir=rtl> " 
         + "<font face=Arial size=2><span lang=he>2</span></font></td> </tr> <tr> " 
         + "<td width=28% valign=top bgcolor=#F8F8FF style=color #687C98><b> <font face=Arial size=2>" 
         + "<span lang=he>3</span></font></b></td> <td width=72% align=right valign=top bgcolor=#F8F8FF> " 
         + "<font face=Arial size=2><span lang=he>4</span></font></td> </tr> <tr> " 
         + "<td width=28% valign=top bgcolor=#D0E4F8> <font face=Arial size=2 color=#687C98><b>5</b>" 
         + "</font></td> <td width=72% align=right valign=top bgcolor=#D0E4F8> <font face=Arial size=2>" 
         + "<span lang=he>6 </span></font></td> </tr> <tr> <td width=28%>LEFT&nbsp</td> " 
         + "<td width=72%>RIGHT&nbsp</td> </tr> </table> </div> </body> </html> "); 
       JTextPane text = new JTextPane(); 
       text.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
       text.setContentType("text/html"); 
       text.setText(str); 
       JScrollPane pane = new JScrollPane(text); 
       JEditorPane text1 = new JEditorPane(); 
       text1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
       text1.setContentType("text/html"); 
       text1.setText(str); 
       JScrollPane pane1 = new JScrollPane(text1); 
       JLabel text2 = new JLabel(); 
       text2.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
       //text2.setContentType("text/html"); // not implemented 
       text2.setText(str); 
       JScrollPane pane2 = new JScrollPane(text2); 
       JTextArea text3 = new JTextArea(); 
       text3.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
       //text3.setContentType("text/html"); // not implemented 
       text3.setText(str); 
       JScrollPane pane3 = new JScrollPane(text3); 
       JFrame.setDefaultLookAndFeelDecorated(true); 
       JFrame frame = new JFrame("العنوان بالعربي"); 
       frame.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
       frame.setLayout(new GridLayout(2,2,5,5)); 
       frame.add(pane); 
       frame.add(pane1); 
       frame.add(pane2); 
       frame.add(pane3); 
       //frame.pack(); 
       frame.setSize(400,600); 
       frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       frame.setVisible(true); 
      } 
     }); 
    } 
}