因此...我开始编程已经有一个月了,所以如果我的错误是一些基本的,请不要生气。谢谢
我只需要复制一个已经写好的代码,但我标记的行有一些错误。
错误:
此行处有多个标记 - 可序列化类 SliderCbx 不声明 long 类型的静态最终序列化版本UID 字段
代码:
package cnad.edu.mx;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SliderCbx extends JFrame {
private JSlider bgColorSlider;
private JLabel lblValSlider;
private JLabel lblCnad;
private JPanel panLbl;
private Font font;
private JRadioButton rbopFont;
private JRadioButton rbopFondo;
private Boolean selectorColor = true;
private ButtonGroup gpoColor;
public SliderCbx () {
super("Slider");
setLayout(new FlowLayout());
lblValSlider = new JLabel ("10");
lblCnad = new JLabel ("CNAD");
panLbl = new JPanel();
bgColorSlider = new JSlider(SwingConstants.HORIZONTAL, 10, 255, 20);
rbopFont = new JRadioButton("Tamaño de letra", false);
rbopFondo = new JRadioButton("Color de fondo", false);
rbopFondo.addItemListener(new radioButtonHandler());
rbopFont.addItemListener(new radioButtonHandler());
gpoColor = new ButtonGroup();
font = new Font("Serif", Font.ITALIC, 40);
bgColorSlider.setMajorTickSpacing(10); // Crea marcas o tick cada 20
bgColorSlider.setPaintTicks(true); // Por defecto se encuentran en false
lblCnad.setFont(font);
bgColorSlider.addChangeListener(new ChangeListener() { // Clase anónima
public void stateChanged(ChangeEvent e) {
String val = Integer.toString(bgColorSlider.getValue());
lblValSlider.setText(val);
// lblCnad.setFont(new Font("Serif", Font BOLD
// bgColorSlider.getValue()));
if (selectorColor == true) {
lblCnad.setForeground(new Color(200, 255, bgColorSlider.getValue()));
}
}
});
add(bgColorSlider);
add(lblValSlider);
add(rbopFont);
add(rbopFondo);
gpoColor.add(rbopFont); // Para que sean muamente excluyentes, se
// colocan en un grupo
gpoColor.add(rbopFondo);
add(panLbl);
panLbl.add(lblCnad);
}
private class radioButtonHandler implements ItemListener { // Clase interna
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getItem() == rbopFont)
selectorColor = true;
else if (e.getItem()==rbopFondo)
selectorColor = false;
}
}
}
这个错误很可能是由您的IDE引起的,我猜是Eclipse。它指出了这样一个事实,即每个Seriezable类都应该提供一个seralVersionUID
,用于检查序列化内容和反序列化类之间的版本兼容性。
这在Swing项目中经常发生,因为大多数Swing类都是可序列化的,但在大多数情况下根本不使用序列化。
如果您的情况不包括序列化/反序列化,则解决方案是将Eclipse项目中serialVersionUID
问题的“错误/警告”设置更改为“警告”。
另一种方法是使用Eclipse的QuickFix或@SuppressWarnings(“serial”)
注释。两者均可从上下文菜单中获得。
顺便说一下,试着使用javac从命令行编译你的项目。你不会在那里得到错误,因为这个问题是由IDE坚持的。它想防止你在真正向你的项目添加一些序列化/反序列化的东西时出现运行时错误。在大多数Swing情况下,最实用的方法是降低问题类别的严重性。