你在构造里利用j2.paint(g1)画表格是不行的,paint方法的参数相当于一张白纸,j2.paint(g1)的意思是在table的白纸上画JPanel:)。
你应该利用这样实现,JPanel j1 = new JPanel() {
  public void paint(Graphics g) {
    label.paint(g);//label为JLabel的实例。  
  }}
JPanel j2 = new JPanel() {
  public void paint(Graphics g) {
    table.paint(g);  //table为JTable实例。
  }
} 当然你的gif的构造需要相应的变一变,传递JTable了。
更好的实现是在Printable的print的方法内利用translate来移动Graphics,自由绘画。