import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class TextComponentTest {
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
TextComponentFrame frame = new TextComponentFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
});
}
}class TextComponentFrame extends JFrame   //serializable 类 TextComponentFrame 未声明类型为 long 的静态终态 serialVersionUID
{
public TextComponentFrame()
{
setTitle("TextComponentTest");
setSize(DEFAULT_WIDTH,DEFAULT_HIGHT);

final JTextField text = new JTextField();
final JPasswordField password = new JPasswordField();

JPanel northPanel = new JPanel();
northPanel.setLayout(new GridLayout(2,2));
northPanel.add(new JLabel("UserName: ",SwingConstants.RIGHT));
northPanel.add(text);

northPanel.add(new JLabel("Password: ",SwingConstants.RIGHT));
northPanel.add(password);

add(northPanel,BorderLayout.NORTH);

final JTextArea textArea = new JTextArea(8,40);
JScrollPane scrollPane =new JScrollPane(textArea);

add(scrollPane,BorderLayout.CENTER);

//add button to append text into the text Area
JPanel southPanel = new JPanel();

JButton insertButton = new JButton("Insert");
southPanel.add(insertButton);

insertButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
textArea.append("UserName: " + text.getText() + " Password: " + new String(password.getPassword()) +"\n");
}
});

add(southPanel,BorderLayout.SOUTH);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HIGHT=300;
}

解决方案 »

  1.   

    class TextComponentFrame extends JFrame   
    //serializable 类 TextComponentFrame 未声明类型为 long 的静态终态 serialVersionUID
    就是这个警告,我不太明白这个警告的意思。
      

  2.   

    有警告的话,点一下eclipse会给你提示的,,呵呵
      

  3.   

    点击TextComponentFrame  点add default generator UID 即可。 
      

  4.   

    百度搜索serialVersionUID,一堆答案,lz自己看哈
      

  5.   

    我知道eclipse里有提示,而且告诉我了修正方法,但是我想弄明白为什么要加个UID?或者说加的这个serialVersionUID是起什么作用?
      

  6.   

    这个警告是因为TextComponentFrame类继承了JFrame而JFrame实现了序列化的接口Seriziable,序列化需要版本控制所以需要声明一个static final long类型的一个版本号,在大多数情况下不需要处理这个问题,如果想消除问题可以加入这样的一个属性
    public static final long serialVersionUID=1L;
      

  7.   

    serialVersionUID维护的作用
    比如你先有一个类
    class S{
        int a;
        int b;
    }
    使用序列化存储到硬盘
    结果你发现b没有用了,删掉了
    然后你反序列化,如果serialVersionUID一样就会无视掉不存在的属性或者将添加的属性设为初始值
    如果不加就会报错
      

  8.   

    晕,这个警告已经说的很明确了,不用在乎。另外eclipse会有很多提示都不用管的