当前位置: 首页 > 知识库问答 >
问题:

JFrame中的JFileChooser使setVisible()冻结

东郭淇
2023-03-14
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

class ApplicationFrame extends JFrame {
  JFileChooser fileChooser;

  public ApplicationFrame(String frameName) {
    super(frameName);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());

    fileChooser = new JFileChooser();
    fileChooser.setControlButtonsAreShown(false);
    panel.add(fileChooser, BorderLayout.CENTER);

    getContentPane().add(panel);
  }
}

public class lab7{
  public static void main(String args[])
  {
    ApplicationFrame windowForApplication = new ApplicationFrame("lab7");
    windowForApplication.setSize(600,600);
    windowForApplication.setVisible(true);
  }
}

如果注释掉panel.add(),框架显示得很好。

我还应该做什么来显示文件选择器?

共有1个答案

狄雅珺
2023-03-14

最让我恼火的是,十有八九有一次帧出现在FileChooser中。

所有Swing组件都应该在事件分派线程上创建。因此,创建GUI的代码应该包装在swingUtilities.invokelater(...)中。

阅读Swing教程中关于并发的部分,了解更多信息和如何实现并发的示例。

 类似资料:
  • 问题内容: 我开发汽车管理系统程序。然后,我想在汽车进出时将邮件发送给该公司的所有者。我的代码可以成功发送邮件,但是我注意到在发送邮件时,其他JFrame窗口被冻结(我无法在所有JFrame窗口上执行任何操作),直到完成邮件发送为止。这通常用于Javamail还是有办法使其他JFrame仍然正常工作? 在我的程序中,大约需要10秒钟才能完成发送一封邮件。 问题答案: 当您执行繁重的任务时,应在另一

  • 因此,我试图在NetBeans IDE中创建swing gui。我对java和GUI的构建是新手,所以这是一个学习曲线。 我创建了一个名为“open”的JMenuItem,并使用JFileChooser打开并显示一个文件。我限制自己使用的文件扩展名是“*.map”。 所以我让我的代码工作了,它在我的桌面上的一个新窗口中打开了选定的文件。但我想知道如何打开JFrame中的文件,而不是一个新窗口。它不

  • 问题内容: 嘿,我只需要回答一个问题…我将如何使以下代码不冻结整个JFrame? 问题答案: 使用其他线程来执行此任务。如果在主UI线程中执行此操作,则它将冻结。例如,您可以执行以下操作 更新 在对Robin和Marko提出明智建议之后,我正在用更好的解决方案来更新答案。

  • 我的包含一个嵌入的单个图形(Graphstream),当我尝试在调用Thread的循环中更新它时会冻结。我尝试在独立图形(显示在它自己的)上使用相同的更新,它按预期工作。 我在JFrame中嵌入了一个图,如下所示(AppGraph.java): 然后在JFrame类中调用它,如下所示: 上有用于不同搜索算法(如BFS)的按钮。在执行这些算法期间,以固定的时间间隔对遍历的边着色,以创建一种动画效果,

  • 问题内容: 如何在不冻结程序的情况下用Java执行进程?我已经尝试过使用SwingWorker,但是我还不太了解它是如何工作的。 我还有其他方法可以做到这一点吗?我想在我的JDroidLib中使用类似的东西。有关完整的源代码,请查看GitHub:http : //github.com/Team-M4gkBeatz/JDroidLib 提前致谢! 编辑: 感谢您的回答。但是我有一个带有几种方法的类(

  • 我有两个类:类jDialog和JFrame 知道如何保持jDialog运行吗?我只使用setVisible()来隐藏它,而不使用dispose();