首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JDialog展示会上绘制动画

在JDialog展示会上绘制动画
EN

Stack Overflow用户
提问于 2008-09-02 09:41:44
回答 4查看 1.6K关注 0票数 5

在显示模式JDialog之前,绘制简单动画的最佳方法是什么?(即从鼠标点击指向对话框位置展开边框)。我认为可以在对话框的setVisible方法上绘制父框架的glasspane。

但是,由于JDialog对于父对象是模态的,所以我无法找到一种方法在JDialog可见之前将绘制事件注入到EDT中,因为EDT上的当前事件还没有完成。

EN

回答 4

Stack Overflow用户

发布于 2008-09-02 15:58:56

您是否正在尝试显示独立于灭绝的JDialog?为了正确地设置顺序,您可能需要将这些操作捆绑在一个runnable中,该runnable会立即传递给EDT。

例如:

代码语言:javascript
复制
SwingUtilities.invokeLater(new Runnable(){
   public void run(){
      doAnnimation();
      showDialog();
   }
}

最好是将JDialog子类化,这样您就可以将doAnnimation()逻辑添加到setVisible(..)或者在调用超类实现之前使用show()方法。

最后,我想您需要手动设置dalog的大小--我不记得Java是否会在对话框显示之前知道它的实际大小,所以如果您在显示对话框之前查询大小,可能会得到一些无用的信息。

票数 1
EN

Stack Overflow用户

发布于 2008-09-18 13:40:06

也许你已经看过JSE6.(Link to SwingWorker)中包含的SwingWorker项目,在我正在读的“肮脏的富客户端”一书中,他们经常使用这个工具。也许您可以在图书网站上的示例中找到提示:http://filthyrichclients.org/

票数 1
EN

Stack Overflow用户

发布于 2008-09-04 01:00:11

你也许能够接受@rcreswick的答案,并对其进行一点扩展,使其发挥作用。

代码语言:javascript
复制
void myShowDialog() {
  new Thread(new Runnable() {public void run() {
    SwingUtilities.invokeAndWait(new Runnable() { public void run() {
      doAnimation();
    } } );
    // Delay to wait for the animation to finish (if needed)
    Thread.sleep(500);
    SwingUtilities.invokeAndWait(new Runnable() { public void run() {
      showDialog();
    } } );
  } } ).start();
}

它非常难看,必须调用它来代替基本的showDialog()调用,但它应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档