当前位置: 首页 > 知识库问答 >
问题:

SliderCbx扩展JFrame错误

申屠鹏
2023-03-14

因此...我开始编程已经有一个月了,所以如果我的错误是一些基本的,请不要生气。谢谢

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

错误:

此行处有多个标记 - 可序列化类 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;      
        }
    }
}

共有1个答案

杨研
2023-03-14

这个错误很可能是由您的IDE引起的,我猜是Eclipse。它指出了这样一个事实,即每个Seriezable类都应该提供一个seralVersionUID,用于检查序列化内容和反序列化类之间的版本兼容性。

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

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

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

顺便说一下,试着使用javac从命令行编译你的项目。你不会在那里得到错误,因为这个问题是由IDE坚持的。它想防止你在真正向你的项目添加一些序列化/反序列化的东西时出现运行时错误。在大多数Swing情况下,最实用的方法是降低问题类别的严重性。

 类似资料:
  • 问题内容: 如何在没有类的情况下绘制对象(扩展了)?我找到了方法,但它没有绘制对象。 问题答案: 如果要更改组件的绘制方式(添加矩形),则需要在该组件中重新定义。在你的代码中,你正在使用 。 你不应该调用组件。你所做的任何绘画(退还给你的绘画)都是暂时的,并且在Swing下次确定需要重新绘画组件时将丢失。 相反,你应该覆盖或的)方法,并使用接收到的对象作为参数在此方法中进行绘制。 检查此链接以进一

  • 我曾多次尝试安装Kartik Grid Extension,但都因以下错误而失败: 设置未知属性:yii\bootstrap\ButtonDropdown::containerOptions 错误位于/Applications/MAMP/htdocs/business/vendor/yiisoft/yii2/base/Component中。php 第197行 我的看法是: 并在web中配置模块。p

  • 问题内容: 我已经看过几次了,但是在我看到的帖子中,没有人解释。为什么我不应该扩展JFrame(或任何组件)?是否存在我应该扩展组件的条件,或者这是您不应该采用的严格规则? 问题答案: 一般而言,扩展组件往往严格使用该组件。这在设计方面以不必要的方式严重地限制了你的选项,以使你的类无法扩展不同的类,你无法隐藏JFrame的方法,从而导致在使用类时,JFrame的维护更加困难并且更容易触发意外的错误

  • 问题内容: 使用Swing制作应用程序时,我已经看到人们做两件事之一来创建JFrame。哪种方法更好,为什么呢? 我是Java和编程的初学者。我唯一的学习资源是书籍,YouTube和Stack Overflow。 和 问题答案: 避免扩展JFrame,因为它将JGUI与你的GUI联系在一起。相反,如果你专注于创建JPanels,那么你可以自由地在需要的任何地方使用这些JPanels-在JFrame

  • 我想为我的应用程序实现DnD,以仅接受某些扩展名的文件(例如wrl)。如果文件将被接受,我想将光标更改为拖动光标,并在拖放错误扩展名的文件时恢复为正常光标。 我一直在遵循以下教程/示例从http://docs.oracle.com/javase/tutorial/uiswing/dnd/toplevel.html 我所做的更改是在can导入函数中 当我在不同的文件中拖动时,这种行为是正确的。但是,

  • 扩展是专门设计的在 Yii 应用中随时可拿来使用的, 并可重发布的软件包。例如, yiisoft/yii2-debug 扩展在你的应用的每个页面底部添加一个方便用于调试的工具栏, 帮助你简单地抓取页面生成的情况。 你可以使用扩展来加速你的开发过程。 信息: 本文中我们使用的术语 "扩展" 特指 Yii 软件包。而用术语 "软件包" 和 "库" 指代非 Yii 专用的通常意义上的软件包。 使用扩展

  • vscode-react-native vscode-go

  • 扩展为现有的类、结构体、枚举类型、或协议添加了新功能。这也包括了为无访问权限的源代码扩展类型的能力(即所谓的逆向建模)。扩展和 Objective-C 中的分类类似。(与 Objective-C 的分类不同的是,Swift 的扩展没有名字。) Swift 中的扩展可以: 添加计算实例属性和计算类型属性; 定义实例方法和类型方法; 提供新初始化器; 定义下标; 定义和使用新内嵌类型; 使现有的类型遵