问题描述:
我本人做了一个小东西,利用windows自带的messenger服务,来给局域网的机器发消息,
其中我有一个控件叫作JList(列表框),它的作用是用来列出用户的一些常用语。这些
常用语是用户自己添加进去的,我把这些常用语通过流的方式把动态的写到文件里。没有
用数据库。当用户使用的时候,会从文件里读出常用语,显示在JList(列表框)中。以方
便用户录入。但是我现在遇到一个问题:
当用户添加常用语的时候,JList(列表框)不能刷新出所添加的常用语,如果重新启动界面
所添加的常用语就显示出来了。请教高手,怎样刷新出所添加的常用语。
我试过的方法有:validate();repaint()但都不行。如有需要这个小东西源码的,请留下mail。声明:这个东西现在可以用,供学习用,但还不改进的余地,大家可以一起来交流。

解决方案 »

  1.   

    添加好后应该重新去读一遍文件然后在repaint(),因为你的JList是从文件中读出来的
      

  2.   

    我个人觉得可以在设置全局变量控制需要载入的内容或状态,repaint()的时候载入,对你的程序不是很清楚,不过我自己做过这种试验
      

  3.   

    void setListData(Object[] listData)           
    Constructs a ListModel from an array of objects and then applies setModel to it. 每次加载完后,重新setListData
      

  4.   

    validate();repaint()只是重新绘制List,不会去加载数据
      

  5.   

    thomas_20(执子之手,与子偕老)我已经试了repaint()、updateUI(),都不行。//JList
    private JList getJListDiction() {
    try {
                if (jListDiction == null) {
                   //从文件里读出的内容
                    Vector v = DataMgr.loadFile(DataMgr.MSG_FLAG_ID);
                       jListDiction = new JList(v);
                 jListDiction.setBounds(38, 213, 249, 145);
                 jListDiction.setFont(new java.awt.Font("华文细       黑",java.awt.Font.PLAIN,18));
                 jListDiction.setForeground(new java.awt.Color(255,153,153));
                
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    return jListDiction;
    }
    /**
     *点击添加常用语的动作按钮
    */
    private JButton getJButtonDiction() {
    if (jButtonDiction == null) {
    jButtonDiction = new JButton();
    jButtonDiction.setBounds(390, 394, 110, 45);
    jButtonDiction.setText("添加常用语");
    jButtonDiction.setFont(new java.awt.Font("华文细黑", java.awt.Font.PLAIN, 14));
    jButtonDiction.setForeground(java.awt.Color.magenta);
    jButtonDiction.addActionListener(new java.awt.event.ActionListener() { 
    public void actionPerformed(java.awt.event.ActionEvent e) {
                                             
        String content = JOptionPane.showInputDialog("请输入常用语:");
                                             //将常用语写进文件
                                             DataMgr.createFileContent(DataMgr.MSG_FLAG_ID, content);
        JPanel jp = getJPanel();
        jp.validate();
        jp.repaint();     
    System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
    }
    });
    }
    return jButtonDiction;
    }
      

  6.   

    nwpulipeng能不能在多写一点代码
      

  7.   

    问题已解决,方法:同nwpulipeng,多谢