JPanel jpa = null;
JTable jtab = null;
boolean blSet = true;
...../**
 * 设定条件(学习中心、专业、课程)
 * 
 * 当按“设定”按钮时,页面中的JTable的:标题、颜色、内容,发生变化
 * 
 * 而结果是:只有前两项发生变化,JTable的内容没有改变,为什么呢?
 * */
void jbSet_Listener(ActionEvent ae) {
  //change the title
  strTitle = " "+XJMainJPanel.strBranName+" "+XJMainJPanel.strSpecName+" "+XJMainJPanel.strCourName+" 学生成绩单";
  Border border1 = new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED,
      Color.white, new Color(148, 145, 140)), strTitle);
  jpa.setBorder(border1);
  //change the content
  jtab.clearSelection();
  jtab.removeAll();
  //change the background
  jtab.setBackground(Color.green);  jpa.show();
  jpa.validate();
  jpa.updateUI();
    
  //show hidden
//  blSet = blSet==false?true:false;
//  jpSet.setVisible(blSet);
}谢谢有经验的朋友们,解决刷新的问题,我昨天搞了一下午....

解决方案 »

  1.   

    看看AbstractTableModel抽象类的方法
    fireTableStructureChanged();// JTable刷新结构
    fireTableDataChanged();// 刷新JTable数据
      

  2.   

    试试jtab。updateUI();
    可能原因是你没有对表进行update,
    不过最好你还是象楼上所说,看看底层的代码。
      

  3.   

    谢谢两位,问题我解决了:))
    真是开卷有益啊---要多看看别人好的代码,好的书:))--------------------------
    我这个界面有点复杂,是JPanel套JPanel,JPanel上又有其
    他的组件,不过这没关系,只要掌握了"刷新"的技术就行:删除那个JPanel上的那个组件,再加进来(赋了新值的)
    --------------------------  ......
      JPanel jpa = null;
      JTable jtab = null;
      JScrollPane jsp = null;
      ......    jtab = new JTable(new myTableModel());
        jtab.setAutoResizeMode( JTable.AUTO_RESIZE_ALL_COLUMNS );    
        jtab.setRowMargin(8);
        jtab.setRowHeight(25);
    //    jtab.setBackground(Color.yellow);
        jtab.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));
        jsp = new JScrollPane(jtab);
        jpa.add(jsp, BorderLayout.CENTER);    add(jpa, BorderLayout.CENTER);
      ......
    //在某监听程序中://    if (jpa != null) remove(jpa);
        if (jpa != null) jpa.remove(jsp);
    //    if (jsp != null) jsp.remove(jtab);     
        jtab = new JTable(new myTableModel());
        jtab.setAutoResizeMode( JTable.AUTO_RESIZE_ALL_COLUMNS );    
        jtab.setRowMargin(8);
        jtab.setRowHeight(25);
        jtab.setBackground(cc[ii]);
        jtab.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));
        jsp = new JScrollPane(jtab);
        jpa.add(jsp, BorderLayout.CENTER);
        
    //    add(jpa, BorderLayout.CENTER);//    show();
    //    validate();
    //    updateUI();
    //    当执行此监听代码时,界面中的某组件会变(这里是jtab的值等)
      ......--------------------------
      

  4.   

    repaint()
    这个方法我还在学习中
    这个不错