SliderCbx扩展了JFrame的错误

时间:2016-11-28 09:01:29

标签: java swing

所以......自从我开始编程以来,我已经有一个月了,所以如果我的错误是基本的话,请不要生气。感谢

我只需复制已编写的代码,但我标记的行有一些错误。

错误:

  

此行有多个标记      - 可序列化的类SliderCbx没有声明long类型的静态最终serialVersionUID字段

代码:

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;      
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这个错误最有可能是你的IDE,我想Eclipse。 它指出的事实是,每个Serializable类都应提供serialVersionUID,用于检查序列化内容和反序列化类之间的版本兼容性。

这通常发生在Swing项目中,因为大多数Swing类都被实现为可序列化,但在大多数情况下根本不使用序列化。

如果您的案例不包括序列化/反序列化,解决方案是将Eclipse项目中的错误/警告设置更改为serialVersionUID问题警告。

另一种方法是使用Eclipse的QuickFix或@SuppressWarnings("serial")注释。两者都可以从上下文菜单中获得。

顺便说一下,尝试使用 javac 从命令行编译项目。您不会在那里收到错误,因为IDE会坚持这个问题。它希望在您向项目中添加一些序列化/反序列化内容时防止出现运行时错误。在大多数Swing案例中,仅降低问题类别的严重性是最实际的。