【发布时间】:2020-07-26 22:52:11
【问题描述】:
我创建了一个简单的初始屏幕,它基本上是一个带有背景图像的JFrame、两个JLabels 和一个JProgressbar。当我只用背景图像渲染框架时,大约需要 200 毫秒,这是启动画面的好时机。
但只要我添加一个 JLabel(使用 Sansserif 字体)就需要两秒钟!因此,创建字符串的时间是渲染图像的 9 倍。
如何降低 JLabels 或面板的渲染速度?
private static final Dimension LOADINGSCREEN_DIMENSION = new Dimension(400, 400);
private LoadingScreen() {
super();
this.setUndecorated(true);
this.setResizable(false);
this.setLayout(new BorderLayout(0, 0));
this.setSize(LOADINGSCREEN_DIMENSION);
this.setPreferredSize(LOADINGSCREEN_DIMENSION);
this.setContentPane(createContentPane());
//UNCOMMENT THIS LINE and it will take about 2 seconds to create
//this.add(createInformationLabel(), BorderLayout.SOUTH);
//Set location and pack
final Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);
}
private JLabel createInformationLabel() {
JLabel infoLabel = new JLabel("Label");
infoLabel.setFont(new Font("SansSerif", Font.PLAIN, 12));
infoLabel.setHorizontalAlignment(SwingConstants.RIGHT);
infoLabel.setBorder(new EmptyBorder(50, 0, 10, 20));
infoLabel.setOpaque(false);
return infoLabel;
}
【问题讨论】:
标签: java swing jpanel rendering jlabel