【问题标题】:Make JLabel html content right-to-left使 JLabel html 内容从右到左
【发布时间】:2012-07-24 07:25:10
【问题描述】:

我想将 JLabel 的内容方向更改为从右到左。
Jlabel 内容是 HTML,我测试了所有这些内容(并且没有一个有效!):

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

我该怎么做?

谢谢

【问题讨论】:

  • 您想将文本向右对齐还是更改它以使文本从右向左读取?

标签: java swing alignment jlabel right-to-left


【解决方案1】:

使用div元素设置文本的对齐方式和宽度:

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

【讨论】:

  • 这是一个有趣的 hack。太糟糕了,它并不总是能给出正确的结果,例如如果字符串末尾有标点符号。
【解决方案2】:

你的意思是标记dir="rtl"

不能直接使用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);
            }
        });
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2018-03-29
    • 2015-05-08
    相关资源
    最近更新 更多