如何在Java中暂停Swing?

时间:2014-12-20 18:07:56

标签: java swing actionlistener keypress

  • 我有一个名为MainProgram.java的主要java程序
  • MainProgram.java将其成员作为JFrame MyFrame
  • 框架MyFrame中有一个名为MyPanel的JPanel
  • 我已经覆盖了MyPanel的PaintComponent来绘制图像。

MainProgram.java不断从视频文件中获取一个源并调用MyPanel的paintComponent。

我想要做的是让程序等到按Enter键。只有当我按下回车键时,才能从视频中取出下一帧并显示。

  1. Thread.sleep我看到在很多地方都无法使用,因此它无法听取密钥 按

  2. 由于我没有计时,所以无法使用计时器。

  3. 我使用的肮脏的解决方法是

    boolean x = false;
    .
    .
    .
    while(x==false);
    .
    .
    .
    onKeyPressed()
    {
        x=true;
        //get frame from video
        //call paintComponent
        x=false;
    }
    

    任何人都可以提供一个好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

使用SwingWorker收集doInBackground()publish()帧实施中的每个图片框,并将其添加到List<BufferedImage> process()List<BufferedImage> 3}}在您List<String>的实施中。您可以浏览{{1}}所显示的{{1}} {{1}}。