Java 将字体应用于JTextArea会使gui崩溃吗?

Java 将字体应用于JTextArea会使gui崩溃吗?,java,swing,user-interface,fonts,Java,Swing,User Interface,Fonts,当字体行被注释掉时,下面的代码可以工作,当包含该行时,根本不显示GUI。据我所知,它的格式正确,但它破坏了GUI。这是什么原因造成的 public class TestCode extends JFrame{ JTextArea jta; public TestCode(){ setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); JPanel content = new JPanel(); jta = new JTextArea

当字体行被注释掉时,下面的代码可以工作,当包含该行时,根本不显示GUI。据我所知,它的格式正确,但它破坏了GUI。这是什么原因造成的

public class TestCode extends JFrame{
JTextArea jta;
public TestCode(){
    setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    JPanel content = new JPanel();
    jta = new JTextArea(20, 30);
    jta.setFont(new Font("Courier New", Font.PLAIN, 12));  // This line crashes
    content.add(jta);
    add(content);         
    pack();
    setVisible(true);
}

public static void main (String [] args){

    TestCode run = new TestCode();

    }
}
我开始怀疑这与我的系统字体有关?我安装了额外的字体,这可能会影响Java检索字体的能力

编辑:


只是澄清一下,当我运行这个程序时没有错误。GUI永远不会打开,IDE也会变得缓慢和有问题,就好像我在运行一个无限循环一样。程序必须通过IDE终止(因为没有显示要关闭的GUI)。

使用1.6和1.7对我来说效果很好

一些建议:

1) 按如下方式强制执行Swing应用程序的EDT:

public static void main(String[] args)
{ 
  SwingUtilities.invokeLater(new Runnable()
  {
    public void run()
    {
      TestCode run = new TestCode();
    }
  });
}
进一步阅读:

2) 将JTextArea放置在JScrollPane中,并将滚动窗格添加到面板中,而不是文本区域本身:

content.add(new JScrollPane(jta));

使用1.6和1.7对我来说效果很好

一些建议:

1) 按如下方式强制执行Swing应用程序的EDT:

public static void main(String[] args)
{ 
  SwingUtilities.invokeLater(new Runnable()
  {
    public void run()
    {
      TestCode run = new TestCode();
    }
  });
}
进一步阅读:

2) 将JTextArea放置在JScrollPane中,并将滚动窗格添加到面板中,而不是文本区域本身:

content.add(new JScrollPane(jta));

问题是由于我的系统上下载的字体过多造成的。我之前下载了一个字体包,其中包含数千种额外的字体,这导致IDE花费了不必要的时间来寻找正确的字体


删除未使用的其他字体解决了问题,现在此代码工作正常。

问题是由于我的系统上下载的字体过多造成的。我之前下载了一个字体包,其中包含数千种额外的字体,这导致IDE花费了不必要的时间来寻找正确的字体


删除未使用的附加字体解决了问题,现在该代码工作正常。

没有错误。GUI永远不会打开。它的行为就像我以某种方式执行了一个无限循环,但它永远不会打开GUI。程序必须从IDE终止。它是否可能打开IDE后面的窗口?不,我已经检查过了。窗口不在那里。也考虑<代码>派生-fOntf()/Case>。如果删除StfFon(),它工作正常吗?没有错误。GUI永远不会打开。它的行为就像我以某种方式执行了一个无限循环,但它永远不会打开GUI。程序必须从IDE终止。它是否可能打开IDE后面的窗口?不,我已经检查过了。窗口不在那里。也考虑<代码>派生-fOnter()/Case>。如果删除SEFFONTHONE(),它工作正常吗?我很想知道您是否有机会在删除之前尝试<代码>派生FUTHONE()/代码>。如果我没有去清理垃圾的话,我会这么做的。我宁愿不重新安装它们来检查,但你可以感觉自由!我很想知道你在删除之前是否有机会尝试
deriveFont()
,因为。@trashgood我没有,对不起。如果我没有去清理垃圾的话,我会这么做的。我宁愿不重新安装它们来检查,但你可以感觉自由!