你因为没有重画啊
添加以后的语句加一句repaint()不就可以了
如果还不可以的话,你可以用SwingUtilites.updateComponentTree(this);(拼写不一定正确,你可以查看SwingUtilities的说明)
一定可以的,
呵,谢谢提醒,我把事件处理改了一下,就OK了。
改动如下:
if (e.getSource().equals(btnSjx))
{
Jp[i].add(new SjxPanel(), b.CENTER);
Jp[i].repaint();
Jp[i].validate();
}
else if(e.getSource().equals(btnJx))
{
Jp[i].add(new JxPanel(), b.CENTER);
Jp[i].repaint();
Jp[i].validate();
}
else if(e.getSource().equals(btnTyx))
{
Jp[i].add(new TyxPanel(), b.CENTER);
Jp[i].repaint();
Jp[i].validate();
}
但是还有一点不明白,Jp[i].repaint();这一句调用重画函数,但是我没有写Jp[i]面板的protected void paintComponent(Graphics g)函数,它默认的是调用什么呢,为什么我把这 Jp[i].repaint(); Jp[i].validate();两句加上去就行了呢。