【问题标题】:setFont() causing JFrame loading too slow , javasetFont() 导致 JFrame 加载太慢,java
【发布时间】:2013-07-24 21:34:31
【问题描述】:

我需要你的帮助来解决这个问题...... 我有一个 JFrame,它的某些组件上有 setFont(font) 函数。 setFont 函数导致 JFrame 加载太慢。有什么替代品吗?或者我应该在java包中导入字体还是什么????。

Font userTextFont=new Font("Joy",Font.BOLD,15);
userText.setFont(userTextFont);

如果我删除它会很好加载

userText.setFont(userTextFont);

userText 是一个 JTextField...

短代码(有类似问题):-

import java.awt.Font;
import javax.swing.*;
import java.awt.*;

public class fonttest{

  public static void main(String[] args)
  {

      fonttest f1=new fonttest();
      f1.go();
  }
     public void go()
   {
      JFrame frame=new JFrame();

      JTextField userTextField=new JTextField(40);
      Font font=new Font("Impact",Font.BOLD,16);
      userTextField.setFont(font);

      frame.getContentPane().add(userTextField);
      frame.setVisible(true);
      frame.setSize(100,100);

   }

} 

【问题讨论】:

  • 只保留一个userTextFont,作为 JFrame 字段。看看 14 还是 16 是不是更快。您也可以尝试将loading the font file 作为资源显式存储在您的应用程序中。
  • 发布一个(SSCCE)[www.sscce.org],发布你初始化所有这些东西的地方
  • 另请看deriveFont()
  • 14 或 16 不会让它更快先生.....
  • 我发布了一个 SSCCE ...请参阅

标签: java swing netbeans fonts


【解决方案1】:

组件加载“缓慢”的问题是它们尚未经过验证。 Window javadoc for setVisible 方法说:

如果窗口和/或其所有者还不能显示,则两者都可以显示。窗口将在可见之前进行验证。

当您调用setVisible() 时,需要验证所有组件。您可以在调用setVisible() 之前在JFrame 上调用pack() 之前验证它们:

  frame.getContentPane().add(userTextField);
  frame.pack();
  frame.setSize(100,100);
  frame.setVisible(true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2016-05-23
    • 2019-01-19
    • 2018-04-05
    • 1970-01-01
    • 2019-05-01
    • 2023-03-27
    相关资源
    最近更新 更多