java使用希伯来语字符串中的html标记(定义为JLabel文本)会降低程序加载速度
我正在编写的程序中有一个问题:
我正在创建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 "};
for (int i = 0; i < 3; i++) {
JLabel stepLbl = new JLabel("<html>" + stepsArr[i] + "</html>");
stepLbl.setForeground(Color.black);
stepLbl.setFont(new Font("Serif", Font.BOLD, 20));
stepLbl.setBackground(Color.cyan);
stepLbl.setBounds(100, 100, 100, 100);
stepLbl.setMinimumSize(new Dimension(100, 100));
this.mainPanel.add(stepLbl);
}
this.setVisible(true);
}
}
我检查后发现,当我只在英语中使用字符串时,在运行程序1-3秒后,窗口会正确显示。为什么是这样?我怎样才能使用带有字符串的HTML标记作为JLabel文本,而不必从启动程序到出现“程序”窗口有这么大的延迟
# 1 楼答案
可以消除一些低效的问题,例如(JLabel,字体创建):
字体、希伯来语和HTML呈现似乎是主要问题,但我没有实际经验。您可以尝试添加
\u200E
(从左到右)和\u200F
(从右到左),看看这是否会产生一些不同使用HTML字体可能会变得更加棘手。检查呈现的字体是否相同,而不是其他字体