首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当用户完成调整JFrame大小时收到通知

当用户完成调整JFrame大小时收到通知
EN

Stack Overflow用户
提问于 2012-04-19 13:37:18
回答 3查看 3.2K关注 0票数 1

我有一个分形生成组件(JPanel的一个子类)在一个JFrame中。当用户调整窗口大小时,需要很长时间才能将分形更新到新的大小。

我目前在ComponentListener上有一个JPanel,但是每次用户拖动窗口边框时都会调用它的componentResized事件。这意味着分形被告知要多次调整大小,并且缓慢地(在几分钟内)增长到新的大小。

当用户释放鼠标按钮时,是否有一种通知方式,以便只有在用户完成调整大小时才能更改分形大小?

另一些人则在侦听器连接到JFrame时发生了这种情况,但由于某种原因,这对我(和其他)不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-19 14:22:06

与每次收到接收事件时开始计算不同,您只能在收到最后一个事件后使用计时器启动计算,例如使用伪代码(或者至少是我在这里直接输入的代码,而不是在IDE中输入的代码)。

代码语言:javascript
复制
private Timer recalculateTimer = new Timer( 20, myRecalculateActionListener );

constructor(){
  recalculateTimer.setRepeats( false );
}
@Override
public void componentResized(ComponentEvent e){
  if ( recalculateTimer.isRunning() ){
    recalculateTimer.restart();
  } else {
    recalculateTimer.start();
  }
}

你仍然可以把它和安德鲁斯的建议结合起来,使用一张图片,直到计算完成为止。

票数 4
EN

Stack Overflow用户

发布于 2012-04-19 14:10:47

  • 您已经查看了HierarchyListener,在那里您可以通过与HierarchyBoundsListener的接口侦听HierarchyEvent
  • ComponentListener基本上没有什么问题,但是您必须将预期的事件包装到Swing Timer,在事件重复的情况下,只能调用Timer#restart(),来自Swing Timer的输出应该是Swing Action
票数 1
EN

Stack Overflow用户

发布于 2013-12-25 01:00:18

现在有点晚了,但似乎没有人找到正确的答案。我发现,当您在窗口的一个child.updateUI() (componentResized块)中调用它时,这个子窗口会调整它的大小并更新它的内容。使用计时器是不安全的。

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

https://stackoverflow.com/questions/10229292

复制
相关文章

相似问题

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