我做了一个多文档界面,上面有很多菜单,点击一个菜单弹出一个InternalFrame,InternalFrame是由Panel构成的,Panel上有一个Table组件,是有滚动条的那种,我设置这个Table是public static类型的。
问题是:我第一次打开,就new了一个jTable,关闭InternalFrame,再打开,重新new了一个jTable,但是原来那个jTable还存在,要怎么删除原来那个,没删除掉的话对我接下来的一些操作影响很大~~~~
我用remove好像都不行~

解决方案 »

  1.   

    你用一个类变量,每次先判断,看是否为null,如果不是,那么只把它重新指向另外一个对象就可以了。如果是null才new
      

  2.   

    1.既然这样为何声明为public static类型?
    2.你用的是public static类型,难道你的意思不是想用单例模式?即Table对象只声明一个,new的时候改变table内容就好了
      

  3.   

    但是第二次打开的话 就找不到jTable了,就只显示一个框框,没有表格
    Table的代码是private JTable getJTable() {
    if (jTable == null) {
    jTable = new JTable();      
    }
    return jTable;
    }
    private JScrollPane getJScrollPane() {
    if (jScrollPane == null) {
    jScrollPane = new JScrollPane();
    jScrollPane.setBounds(new Rectangle(10, 120, 680, 271));
    jScrollPane.setViewportView(getJTable());
    }

    }

    return jScrollPane;
    }
      

  4.   

    if (jTable == null) {
    jTable = new JTable();     
    } 如果JTable是Public static的话,这一段应该在第二次的时候是走不进去的吧
    你remove只是将JTable从panel中拿掉,并不会将JTable对象dispose“但是第二次打开的话 就找不到jTable了,就只显示一个框框,没有表格 ”第一次生成的JTable被remove了第二次又无法生成新的,当然只能显示个框框啦,那个框框应该就是JScrollPane
      

  5.   


    你说的没错~但是我没有remove,第二次打开的时候也看不到table啊,要怎样才能得到原来的那个table?
      

  6.   

    或者说 要怎样删除JTable对象?我用remove(jTable)都删不掉啊?
      

  7.   


    我不是想用单例模式,Panel上面有个添加按钮,点击 弹出一个Frame的添加界面 确定后添加某些东西在Table上,这时要立即刷新Table  我就在Frame重画Table所以才设置成public static。。