case就是这样的。
TextField tf ;
switch(editType)
    {
case 0:
             tf = (TextField)e.getSource();
             break;
case 1:
     tf = (JFormattedTextField)e.getSource(); 
             break;
    }

解决方案 »

  1.   

    switch(editType)
        {
    case 0:
                 {//add by sayo
                  TextField tf = (TextField)e.getSource();
                 }//add by sayo
                 break;
    case 1:
                 {//add by sayo
        JFormattedTextField tf = (JFormattedTextField)e.getSource();
                 } //add by sayo
                 break;
        }这样就行了
      

  2.   

    按照sayo的做法,程序编译整个switch时都不报错了,可是所有引用到tf的地方都会报错:
    D:\myJava\DataEM\DateEM.java:46: cannot resolve symbol我不知道这时候JAVA编译器对变量tf是运行时绑定还是编译时绑定,如果是编译时绑定,那岂不是在内存中有两个同名同作用域的变量?
      

  3.   

    我认为如果先定义了一个tf,然后switch语句又定义了一个tf系统会认为是两个.故你的程序出错了.signboy是对的.
      

  4.   

    signboy的方法我一早就想过了,可他忽略了一个问题,TextField和JFormattedTextField不能互相转换.
      

  5.   

    你想做什么?这样做的话case里的东西在外面是不能用的,只能在里面用。如果你只想在case里用的话,何不用两个不同的变量名呢?
      

  6.   

    case就是这样的。
    Component tf ;switch(editType)
        {
    case 0:
                 (TextField)tf......;
                 break;
    case 1:
         (JFormattedTextField)tf......
                 break;
        }