关闭一个JInternalFrame会产生什么效果? 当这个InternalFrame被关闭后,所有的占用的资源都会自动通过垃圾收集机制释放。如果你的view不再被其他的类使用的话,会自动回收掉的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上二位大概没搞明白我的问题如mercury1231所说 :“不再被其他的类使用的话”我现在的问题就是我用一个java.util.LinkedList保存了对那个view的引用如过我不释放这个引用JVM就决不可能把我的view当做垃圾我的问题是我该在什么时候释放这个view? 这个要取决于你的link list是在哪里的?如果你的link list并没有在internal frame关闭时被结束,那么应该view也不会被回收。你一定需要手动回收对应的view。事实上,这个可能不关垃圾回收的事情,这好像是两个方面的事情来的。就好比你根本没把垃圾丢出去,那么人家当然不可能自动帮你回收这个垃圾了。 为internal frame增加一个事件(就是在关闭时触发的事件,让它去删除LinkedList保存了对那个view的引用)217.否决器 VetoableChangeListenerinterframe_1.addVetoableChangeListener(new CloseListener(this));class CloseListener implements VetoableChangeListener { private JFrame frame; public CloseListener(JFrame f){ this.frame =f; } public void vetoableChange(PropertyChangeEvent e) throws PropertyVetoException { String name = e.getPropertyName(); if(name.equals(JInternalFrame.IS_CLOSED_PROPERTY)) { Component internalFrame = (Component)e.getSource(); Boolean oldValue = (Boolean)e.getOldValue(); Boolean newValue = (Boolean)e.getNewValue(); if(oldValue == Boolean.FALSE && newValue == Boolean.TRUE) { int answer = JOptionPane.showConfirmDialog( this.frame, // parentComponent "Save Changes?", // message "Unsaved Changes", // title JOptionPane.YES_NO_CANCEL_OPTION); if(answer == JOptionPane.CANCEL_OPTION) { throw new PropertyVetoException("close cancelled", e); } } } }} java JdbcTemplate 的方法 输出这个结果,为什么(关于continue,while) 知道错在哪,不知咋改? 急急急 问个关于命令行下运行java程序的问题? 50分现在帮朋友急求一个同步队列的java实现 eclipse 应该如何导入现有工程 很简单的问题:read()能读出哪些? Strng..replaceAll("\t","CX65");如何把字符串中的\t替换为其他的字符? 类Day在怎样引用 窗口如何关闭 如何判断是否按下的是2个键(如“上”和“右”),我很急,谢谢 关于同一个包中的引用问题!
如mercury1231所说 :“不再被其他的类使用的话”我现在的问题就是我用一个java.util.LinkedList保存了对那个view的引用
如过我不释放这个引用JVM就决不可能把我的view当做垃圾我的问题是我该在什么时候释放这个view?
217.否决器 VetoableChangeListenerinterframe_1.addVetoableChangeListener(new CloseListener(this));class CloseListener implements VetoableChangeListener {
private JFrame frame; public CloseListener(JFrame f){
this.frame =f;
}
public void vetoableChange(PropertyChangeEvent e)
throws PropertyVetoException {
String name = e.getPropertyName(); if(name.equals(JInternalFrame.IS_CLOSED_PROPERTY)) {
Component internalFrame = (Component)e.getSource();
Boolean oldValue = (Boolean)e.getOldValue();
Boolean newValue = (Boolean)e.getNewValue(); if(oldValue == Boolean.FALSE && newValue == Boolean.TRUE) {
int answer = JOptionPane.showConfirmDialog(
this.frame, // parentComponent
"Save Changes?", // message
"Unsaved Changes", // title
JOptionPane.YES_NO_CANCEL_OPTION); if(answer == JOptionPane.CANCEL_OPTION) {
throw new PropertyVetoException("close cancelled", e); }
}
}
}
}