【问题标题】:Java swing gui memory allocationJava swing gui内存分配
【发布时间】:2012-04-23 05:44:05
【问题描述】:

您好,我想知道是否有一种方法可以设置 jbutton 来执行与 setdefaultcloseoperation(JFrame.DISPOSE_ON_CLOSE) 等效的操作,因为我不明白如果框架对象在框架设置为不可见时仍然有侦听器,它如何有资格进行收集.如果这没有意义,我可以发送代码。

【问题讨论】:

  • 再解释一下。我在这里看不到你在问什么。
  • 就在你所谓的JButtonactionPerformed(...) 方法中写frameObject.dispose();,这会给你,你的等效行为:-)
  • 甜蜜。谢谢你!
  • 呵呵,你很受欢迎,保持微笑:-)

标签: java swing user-interface memory


【解决方案1】:
  • 顶级容器(JFrameJDialog ...)错过了finalize()then they are never GC'd 的实现

  • 等效于JFrame.DISPOSE_ON_CLOSE 仅是setVisible(false)

  • 您可以从方法Window[] wins = Window.getWindows();返回所有顶级容器

  • 您只能从ContentPane 中删除所有JComponents,以将使用过的内存返回

编辑

  • 只有带有Focus 的可见容器可以监听或触发来自Swing Listeners 的事件

【讨论】:

  • +1,此信息始终正确,没有人有权控制 GARBAGE COLLECTION :-),但不会编写 dispose(),至少可以让 GC 收集它,虽然只有 JVM 可以判断什么时候会发生。
  • 是的,我就是这么想的。那么 setVisible(false) 是否让帧侦听器保持打开状态?因此不能使框架符合 gc 条件?
  • 这是有道理的。就这样我知道我已经理解了您的编辑,焦点是 setVisible(bool) 打开和关闭的内容吗?
【解决方案2】:
addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e){
                   myframe.dispose();
                   }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 2015-09-11
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多