为了账号安全,请及时绑定邮箱和手机立即绑定

在定义为 JLabel 文本的希伯来语字符串中使用 html 标签使程序加载速度变慢

在定义为 JLabel 文本的希伯来语字符串中使用 html 标签使程序加载速度变慢

慕的地8271018 2021-11-03 16:01:28
我正在编写的程序中有一个问题:我正在创建 3 个对象类型JLabel,并且我使用的是希伯来语语言字符串。我将每个字符串与一个开始的 HTML 标签和一个结束的 HTML 标签连接起来,以启用多行文本。问题是,当我使用 HTML 标签时,将 HTML 标签连接到字符串并将它们设置为 JLabels 文本,从运行程序到出现窗口大约需要 6 秒。当我不使用 HTML 标签时,窗口会在程序运行后一到两秒内显示出来。为什么会这样?如何使用带有字符串的 HTML 标签作为 JLabel 文本,而不会从启动程序到出现程序窗口有这么大的延迟?操作系统:windows 10编译器:Intellij IDEA编码:import javax.swing.*;import javax.swing.border.EmptyBorder;import javax.swing.border.LineBorder;import java.awt.*;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;public class GuideUseWin extends JFrame {    private JPanel mainPanel;    private BoxLayout mainLayout;    private JLabel firstImgLbl;    private JLabel secondImgLbl;    private JLabel thierdImgLbl;    public GuideUseWin() {        this.setSize(400, 700);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);        this.mainPanel = new JPanel();        this.mainLayout = new BoxLayout(this.mainPanel, BoxLayout.PAGE_AXIS);        this.mainPanel.setLayout(this.mainLayout);        this.add(this.mainPanel);        this.firstImgLbl = new JLabel();        ArrayList <JLabel> photosLblsArr = new ArrayList<JLabel>();        photosLblsArr.add(this.firstImgLbl);        photosLblsArr.add(this.secondImgLbl);        photosLblsArr.add(this.thierdImgLbl);        String[] stepsArr = {"מדריך שימוש בסיסי בתוכנה ",            "תחילה יש לבחור X מתוך 3 השורות המוצגות בחלון  התוכנית, על ידי לחיצה על אחד המקשים 1,2 או 3 במקלדת הנומרית",            "לאחר מכן, יש לבחור מספר  על ידי לחיצה על אחד המקשים 0-9 "};    }}我检查并发现当我仅使用英文字符串时,在运行程序后 1-3 秒后窗口会正确显示。为什么会这样?以及如何使用带有字符串的 HTML 标签作为 JLabel 文本,而不会从启动程序到出现程序窗口有这么大的延迟?
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

可以消除一些低效率,像这样(JLabel,字体创建):


    StringBuilder sb = new StringBuilder("<html>");

    for (String step : stepsArr) {

        sb.append(step).append("<br>");

    }

    JLabel stepLbl = new JLabel(sb.toString());

    stepLbl.setForeground(Color.black);

    stepLbl.setFont(new Font("Serif", Font.BOLD, 20));

    stepLbl.setBackground(Color.cyan);

    stepLbl.setBounds(100, 100, 100, 300);

    stepLbl.setMinimumSize(new Dimension(100, 300));

    mainPanel.add(stepLbl);

字体、希伯来语和 HTML 渲染似乎是主要问题,但我没有实际经验。您可以尝试添加\u200E(Left-to-Right) 和\u200F(Right-to-Left) 以查看是否有所不同。


使用 HTML 字体可能会变得更加棘手。检查是否呈现相同的字体,而不是额外的。


    StringBuilder sb = new StringBuilder("<html>");

    sb.append("<span style='font-family: Serif'>");

    for (String step : stepsArr) {

        sb.append(step).append("<br>");

    }

    sb.append("</span>");


查看完整回答
反对 回复 2021-11-03
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信