java swing 设置组件大小_Java Swing:在组件*完成*大小调整时执行某些操作

对这个有点不明确的问题道歉 – 想不出更好的方法.

我使用JXTaskPane(来自Swing labs扩展API)来显示一些信息.

用户可以“单击”标题以展开面板. JXTaskPane位于容器JPanel中,然后将其添加到我的主应用程序窗口JFrame中.

我希望我的应用程序窗口调整为扩展任务窗格的大小.为此,我向容器JPanel添加了一个组件监听器,它将大小设置为现在扩展的面板.

panel.addComponentListener(new ComponentListener()

{

public void componentResized(ComponentEvent e)

{

Dimension newSize = ((JXTaskPane)e.getSource()).getSize();

reSizeFrame(newSize);

}

}

private void reSizeFrame(Dimension newSize)

{

if ((newSize.height < maxSize.height) && (newSize.width < maxSize.width))

{

containerPanel.setSize(newSize);

appFrame.setSize(containerPanel.getSize());

appFrame.pack();

}

}

问题是在任务窗格扩展时调用componentResized方法,因此调用resizeFrame方法很多次,并且在屏幕上看起来非常糟糕.

如何检测JXTaskpane何时完成大小调整?我想到了两种方法:

>将resizeFrame()方法放在SwingUtilities.invokeLate(..)调用中.

>输入一个定时器resizeFrame调用,因此任何后续调用都不会执行任何操作,直到定时器触发.这应该为面板调整大小提供足够的时间.

前进的最佳方式是什么?

此外 – 这是我经过多年服务器端程序后的第一个认真的Java GUI应用程序. StackOverflow非常有用.那谢谢啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值