Java JFrame setVisible(false)和setState(Frame.ICONIFIED)之间的差异
在Swing中,我们可以使用两种方法隐藏Java JFrame setVisible(false)和setState(Frame.ICONIFIED)之间的差异,java,swing,jframe,Java,Swing,Jframe,在Swing中,我们可以使用两种方法隐藏JFrame: frame.setVisible(false) frame.setState(frame.ICONIFIED) 我发现的区别是: frame.setVisible(false)从任务栏中删除图标,而图标化的不会 我们可以将侦听器添加到ICONIFIED,而不能为frame.setVisible(false)添加侦听器 我还缺少其他重要的区别吗?任何想法都将不胜感激。使用setVisible(false),如果组件尚未标记为不可见,则setV
JFrame
:
frame.setVisible(false)
frame.setState(frame.ICONIFIED)
frame.setVisible(false)
从任务栏中删除图标,而图标化的
不会ICONIFIED
,而不能为frame.setVisible(false)
添加侦听器使用setVisible(false),如果组件尚未标记为不可见,则setVisible调用invalidate()这会使容器的布局和父链无效,因为现在容器中有更多的屏幕不动产,必须调整同级的位置以流入释放的空间。
但是ICONFIED
正在执行窗口的最小化过程
我们可以将侦听器添加到ICONIFIED,但不能为frame.setVisible(false)添加侦听器
您可以使用
ComponentListener
和处理componentHidden(…)
我所知道的主要区别如下:1) frame.setState(frame.ICONIFIED)只更改帧的状态,而frame.setVisible(false)更改帧的可见性。
2) 类java.awt.Frame中的setState(Frame.ICONIFIED)方法可以通过编程最小化一个帧,并设置state(Frame.NORMAL)来恢复它。
3) 不可见帧不能使用任何侦听器,但您可以将侦听器添加到图标化的帧。
4) frame.setVisible(false)从屏幕上删除frame的物理状态,而setState(frame.ICONIFIED)只是更改状态以保留其物理状态
这两种方法各有其特点,因此请更自信地选择一种更适合您的情况。帧的默认关闭操作是什么?这将改变
setVisible(false)
JFrame.EXIT\u ON\u CLOSE关闭该帧,如果它是程序的唯一活动帧,则程序也将关闭。我知道这么多。我被你的评论“这将改变setVisible(false)的行为”弄糊涂了。请尝试使用其他(DISPOSE\u ON\u CLOSE
&DO\u NOTHING\u ON\u CLOSE
),在使用时查阅Java文档。有关关闭时的处置,请参阅。图标应该出现在任务栏中,直到最后一个关闭。ComponentListener对我来说真的很新。你能不能再给我一些不同点,并把它们列出来。