0

私の問題は、JSpinner (コードでは spinnerCantidadPuntas という名前) がまったく表示されないか、単にバグがあることです。プロジェクトを実行すると(F6)、正しく表示されないことがほぼ保証されますが、デバッグすると(CTRL + F5)、ほとんどの場合正しく表示されます。理由がわかりません。何を使用しているかの詳細は次のとおりです。

製品バージョン: NetBeans IDE 7.2.1 (ビルド 201210100934) Java: 1.7.0_11; Java HotSpot(TM) Client VM 23.6-b04 システム: x86 上で動作する Windows 7 バージョン 6.1。Cp1252; es_VE (nb)

私はプロジェクトを作成しました。ここにすべてのクラスの内容をリストしています

    package estrella;
    public class Main {
        public static void main(String[] args) {
            Interfaz f=new Interfaz();
        }
    }



    package estrella;
    import java.awt.Color;
    import java.awt.Container;
    import java.util.Hashtable;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JSlider;
    import javax.swing.JSpinner;
    import javax.swing.SpinnerNumberModel;
    public class Interfaz extends JFrame {

        Container c;

        AreaDeDibujos lienzo;

        JLabel lInfo,lCantidadPuntas,lTamanioEstrella,lLargoPuntas;
        JSpinner spinnerCantidadPuntas;
        JSlider sliderTamanioEstrella,sliderLargoPuntas;

        public Interfaz(){

            setTitle("Ejemplo <<Dibujo de primitivas y poligonos>> Version 1.0 (05/02/2013)");
            setSize(1024,720);
            setResizable(false);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
            setVisible(true);

            c=getContentPane();
            c.setBackground(new Color(240,250,245));
            c.setLayout(null);

            /*lienzo=new AreaDeDibujos();
            lienzo.setBounds(25,25,800,600);

            c.add(lienzo);*/

            lInfo=new JLabel("Por favor, seleccione los parametros de la estrella a dibujar:");
            lInfo.setBounds(10,10,350,20);
            c.add(lInfo);

            lCantidadPuntas=new JLabel("Numero de puntas de la estrella: ");
            lCantidadPuntas.setBounds(10,35,350,20);
            c.add(lCantidadPuntas);
            spinnerCantidadPuntas=new JSpinner(new SpinnerNumberModel(7, //valor inicial
                                                              Estrella.MINIMO_PUNTAS, //valor minimo
                                                              Estrella.MAXIMO_PUNTAS, //valor maximo
                                                              1 // incremento/decremento (paso)
                                                             )
                                       );
            spinnerCantidadPuntas.setBounds(10,55,120,20);
            c.add(spinnerCantidadPuntas);

            lTamanioEstrella=new JLabel("Tamaño de la estrella (pixeles): ");
            lTamanioEstrella.setBounds(10,80,350,20);
            c.add(lTamanioEstrella);
            sliderTamanioEstrella=new JSlider( 
                                     JSlider.HORIZONTAL,
                                     AreaDeDibujos.TAMANIO_ESTRELLA_MINIMO,
                                     AreaDeDibujos.TAMANIO_ESTRELLA_MAXIMO,
                                     (int)(AreaDeDibujos.TAMANIO_ESTRELLA_MAXIMO/2)
                                     );
            Hashtable etiquetasDelSlider1 = new Hashtable();
            int i,cantidadDeRayas,rango,paso,minimo,maximo,valorDeLaRaya;
            minimo=AreaDeDibujos.TAMANIO_ESTRELLA_MINIMO;
            maximo=AreaDeDibujos.TAMANIO_ESTRELLA_MAXIMO;
            rango=maximo-minimo;
            cantidadDeRayas=10;
            paso=rango/cantidadDeRayas;
            for(i=0;i<=cantidadDeRayas;i++){
                valorDeLaRaya=minimo+paso*i;
                etiquetasDelSlider1.put(new Integer (valorDeLaRaya), new JLabel(""+valorDeLaRaya));
    }
            sliderTamanioEstrella.setLabelTable( etiquetasDelSlider1 );
            sliderTamanioEstrella.setPaintLabels(true);
            sliderTamanioEstrella.setMajorTickSpacing(10);
            sliderTamanioEstrella.setPaintTicks(true);
            sliderTamanioEstrella.setBounds(10,100,350,60);
            c.add(sliderTamanioEstrella);
        }

    }

    package estrella;
    public class Estrella {
        public static final int MINIMO_PUNTAS=3,MAXIMO_PUNTAS=10;
    }

    package estrella;
    public class GestorDeEventos {   
    }

    package estrella;
    import javax.swing.JComponent;
    public class AreaDeDibujos extends JComponent {
        public static final int TAMANIO_ESTRELLA_MINIMO=50,TAMANIO_ESTRELLA_MAXIMO=400;
    }

私はわざわざJarファイルを追加しませんでした.

4

1 に答える 1

2

「私の問題は JSpinner です」、実際には、適切なレイアウト マネージャーがないことです...

レイアウト マネージャーを使用するnullと、(コンテナーに何かを追加して) コンテナーを無効にするたびに、再描画マネージャーが識別する方法でコンテナー自体が更新されません。

setVisible(true);コンストラクターの最後に移動します。

レイアウト マネージャーを使用している場合は、代わりにrevalidate/を使用できます。repaint

于 2013-02-06T02:00:07.743 に答える