诡异的问题,为什么给一个JLabel设置字体后,加载到有图片背景的窗口后,窗口会卡顿几秒?

时间:2021-09-23 11:03:02
背景如下:
1.做一个带背景图的窗口
2.在此窗口上叠放一个button和一个Label,我设置了Label所显示的字体
问题是:为什么设置为默认字体(Default或Times New Roman ),窗口正常加载了,而我想设置一些比较漂亮的字体,比如Segoe Script或微软雅黑后,运行时,窗口一定会空白个1-2秒才正常显示。
求大神解答。。。
生成界面如: 诡异的问题,为什么给一个JLabel设置字体后,加载到有图片背景的窗口后,窗口会卡顿几秒?
代码如下
import java.awt.*;
import javax.swing.*;
import java.awt.Container;

public class demo {

public demo() {
}

public static void main (String[] args) {
        JFrame frame=new JFrame("为嘛会卡?");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ImageIcon img = new ImageIcon("F:/images/2.jpg");
        //将背景图放在标签里
        JLabel imgLabel = new JLabel(img);
        //注意这里是关键,将背景标签添加到jfram的LayeredPane面板里
        frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
       //设置背景标签的位置
        imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());
        Container cp=frame.getContentPane();
        cp.setLayout(new BorderLayout());
        //在背景图上叠加控件,加一个button一个带指定文本的标签      
        JPanel panelContent = new JPanel();
        panelContent.setLayout (null);
        panelContent.setOpaque(false);
        JButton but=new JButton("a");
          /*
        * -----------------------看过来看过来---------问题就出现在这里------------
        * 设置了字体为"Segoe Script",会卡啊!!!但是为嘛Defautl就不卡呢?怎么解决啊
        */
JLabel jl = new JLabel("789");
jl.setFont(new Font("Segoe Script", Font.PLAIN, 20));
jl.setSize(80, 40);
        but.setBounds(50,100,50,32);
       //---------------------------------------------------------------------
    panelContent.add(but);
    panelContent.add(jl);
        //将多控件面板添加入窗口的内容面板
        cp.add(panelContent);
        ((JPanel)cp).setOpaque(false); 

        frame.setSize(300,300);
        frame.setVisible(true);

}
}

4 个解决方案

#1


测试了一下,没碰到这种情况啊。代码也没什么问题。电脑太慢还是图片太大还是编译环境问题?

#2


真不晓得怎么回事,用的Myeclipse2014和Edipuls 跑的都有问题

一会换台电脑试下
不晓得跟这个有没有关系http://www.cnblogs.com/zcy_soft/archive/2014/01/03/3503656.html
但是我用的还只是JAVA自身支持的字体吧?
但是为什么设默认字体时运行正常???

#3


会不会是图片太大了。

#4


不大哦,才50KB ,500*333大小

#1


测试了一下,没碰到这种情况啊。代码也没什么问题。电脑太慢还是图片太大还是编译环境问题?

#2


真不晓得怎么回事,用的Myeclipse2014和Edipuls 跑的都有问题

一会换台电脑试下
不晓得跟这个有没有关系http://www.cnblogs.com/zcy_soft/archive/2014/01/03/3503656.html
但是我用的还只是JAVA自身支持的字体吧?
但是为什么设默认字体时运行正常???

#3


会不会是图片太大了。

#4


不大哦,才50KB ,500*333大小