既然是if(tagtab==2),那么应该是Test2
Test1 t1=(Test1)tabbed.getComponentAt(0);//运行时,这里报错
-->
Test2 t2=(Test2)tabbed.getComponentAt(0);

解决方案 »

  1.   

    可我要获得Test1里的aaaa的值,应该怎么得呢
    Test1 t1=(Test1)tabbed.getComponentAt(1);//改成1,2都还是报错啊
      

  2.   

    将条件改改
     if(tagtab==2)
    -->
     if(tagtab==1)
      

  3.   

    还是报错!
    而且我是想点击Test3时,激活事件,获得此时Test1,Test2里相应得变量值
      

  4.   

    把t1、t2、t3声明为final static的
      

  5.   

    if(tagtab==2)
        {
          Test1 t1=(Test1)tabbed.getComponentAt(0);//运行时,这里报错
          int aa=tabbed.getComponentCount();
          System.out.println("aa "+t1.aaaa);//Test1里有变量public int aaaa=3;
        }
    -->
        if(tagtab==2)
        {
        Test1 t1=null;
        for(int i=0;i<tabbed.getComponentCount();i++) {
          if(tabbed.getComponentAt(i) instanceof Test1) {//判断是否Test1的实例
            t1=(Test1)tabbed.getComponentAt(0);
            break;
          }
        }
          int aa=tabbed.getComponentCount();
          System.out.println("aa "+t1.aaaa);//Test1里有变量public int aaaa=3;
        }
      

  6.   

    还是报错,是创建Test1,2,3是声明为final类
    还是在初始化时用final啊,两个我都试了,还是一样报错
    java.lang.ClassCastException
    at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:287) at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:219) at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:116) at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:50) at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:468) at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:461) at javax.swing.plaf.basic.BasicTabbedPaneUI$MouseHandler.mousePressed(BasicTabbedPaneUI.java:3051)
      

  7.   

    sorry,上面:
    t1=(Test1)tabbed.getComponentAt(0);
    -->
    t1=(Test1)tabbed.getComponentAt(i);
      

  8.   

    回复老超时,faint everywhere