亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在定義為 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 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號