2016-11-28 6 views
0

私はプログラミングを始めてから1ヶ月ぐらいですが、私のミスが何か基本的なものであれば怒らないでください。ありがとうSliderCbxはJFrameの間違いを広げます

私はすでに書かれたコードをコピーする必要がありますが、マークした行にはいくつかのエラーがあります。

エラー:

Multiple markers at this line - The serializable class SliderCbx does not declare a static final serialVersionUID field of type long

コード:このエラーはほとんどの場合、あなたのIDEに育てている

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

http://stackoverflow.com/questions/15045865/how-to-remove-the-warning-the-serializable-class-classname-does-not-declare-a-st多分あなたを助けることができます –

答えて

0

、Eclipseは私が推測します。 シリアライズ可能なすべてのクラスは、シリアライズされたコンテンツとデシリアライズクラスの間のバージョンの互換性をチェックするために使用されるserialVersionUIDを提供する必要があるということを指しています。

ほとんどのSwingクラスはシリアライズ可能なものとして実装されていますが、ほとんどの場合シリアライゼーションはまったく使用されないため、これはSwingプロジェクトでよく発生します。

ケースにシリアル化/デシリアライズが含まれていない場合、解決策は、serialVersionUIDのEclipseプロジェクトのにエラー/警告設定の警告を警告に変更しています。

もう1つの方法は、EclipseのQuickFixまたは@SuppressWarnings("serial")アノテーションを使用することです。どちらもコンテキストメニューから利用できます。

ところで、コマンドラインからjavacを使ってプロジェクトをコンパイルしてみてください。この問題はIDEによって主張されているため、エラーは発生しません。実際にいくつかのシリアライゼーション/デシリアライゼーションをプロジェクトに追加する際に、ランタイムエラーが発生しないようにしたいと考えています。ほとんどのSwingのケースでは、問題カテゴリの重大度を格下げするのが最も実用的です。

関連する問題