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);
}谢谢有经验的朋友们,解决刷新的问题,我昨天搞了一下午....
fireTableStructureChanged();// JTable刷新结构
fireTableDataChanged();// 刷新JTable数据
可能原因是你没有对表进行update,
不过最好你还是象楼上所说,看看底层的代码。
真是开卷有益啊---要多看看别人好的代码,好的书:))--------------------------
我这个界面有点复杂,是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的值等)
......--------------------------
这个方法我还在学习中
这个不错