Java JSpinner有时显示不正确

Java JSpinner有时显示不正确,java,netbeans,jspinner,Java,Netbeans,Jspinner,我的问题是JSpinner(代码中名为spinnerCantidadPuntas)有时根本不显示,或者只是bug。当我运行项目(F6)时,它几乎保证不会正确显示,当我调试它(CTRL+F5)时,它大部分时间都会正确显示。我想不出原因。以下是我使用的详细信息: 产品版本:NetBeans IDE 7.2.1(构建201210100934) Java:1.7.0_11;Java热点(TM)客户端VM 23.6-b04 系统:在x86上运行的Windows7版本6.1;Cp1252;E_VE(nb)

我的问题是JSpinner(代码中名为spinnerCantidadPuntas)有时根本不显示,或者只是bug。当我运行项目(F6)时,它几乎保证不会正确显示,当我调试它(CTRL+F5)时,它大部分时间都会正确显示。我想不出原因。以下是我使用的详细信息:

产品版本:NetBeans IDE 7.2.1(构建201210100934) Java:1.7.0_11;Java热点(TM)客户端VM 23.6-b04 系统:在x86上运行的Windows7版本6.1;Cp1252;E_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;
    }
package-estrella;
公共班机{
公共静态void main(字符串[]args){
Interfaz f=新的Interfaz();
}
}
包装雌蕊;
导入java.awt.Color;
导入java.awt.Container;
导入java.util.Hashtable;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JSlider;
导入javax.swing.JSpinner;
导入javax.swing.SpinnerNumberModel;
公共类Interfaz扩展JFrame{
容器c;
迪布霍斯·连佐地区;
杰拉贝尔·林福、勒坎蒂达普塔斯、阿尔伽尼奥埃斯特雷拉、洛格普塔斯;
JSpinner喷丝板;
JSlider sliderTamanioEstrella,SliderArgopuntas;
公共教育{
setTitle(“Ejempo版本1.0(05/02/2013)”;
设置大小(1024720);
可设置大小(假);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(空);
setVisible(真);
c=getContentPane();
c、 挫折背景(新颜色(240250245));
c、 setLayout(空);
/*lienzo=新区域的Dibujos();
利恩佐.塞博恩斯(25,25800600),;
c、 添加(lienzo)*/
lInfo=新的JLabel(“赞成,请选择estrella a dibujar的参数:”);
林佛.立根(10,10350,20);
c、 添加(lInfo);
lCantidadPuntas=新的JLabel(“estrella的数字”);
立根(10,35350,20);
c、 添加(lCantidadPuntas);
喷丝头Cantidadpuntas=新的JSpinner(新喷丝头编号模型(7,//valor inicial
Estrella.MINIMO_PUNTAS,//valor MINIMO
Estrella.MAXIMO_PUNTAS,//valor MAXIMO
1//递增/递减(paso)
)
);
喷丝头斜接(10,55120,20);
c、 添加(喷丝头cantidadpuntas);
lTamanioEstrella=新JLabel(“Tamaño de la estrella(像素):”;
根瘤菌(10,80350,20);
c、 添加(ltamaniostrella);
sliderTamanioEstrella=新的JSlider(
JSlider.HORIZONTAL,
TAMANIO_ESTRELLA_MINIMO区,
塔马尼奥·埃斯特雷拉·马克西莫地区,
(国际)(塔马尼奥·埃斯特雷拉·马克西莫地区/2)
);
Hashtable etiquetasDelSlider1=新的Hashtable();
int i、cantidadDeRayas、rango、paso、minimo、maximo、valorDeLaRaya;
最小值=最小值;
maximo=区域DIBUJOS.TAMANIO_ESTRELLA_maximo;
rango=最大最小值;
cantidadDeRayas=10;
paso=兰戈/坎蒂达德雷亚斯;
对于(i=0;i“我的问题是JSpinner”,实际上,这是因为缺少适当的布局管理器

使用
null
布局管理器意味着每当您使容器无效时(通过向容器添加内容),容器都不会以重绘管理器将识别的方式更新自身

setVisible(true);
移动到构造函数的末尾


如果您使用的是布局管理器,您可以
重新验证
/
重新绘制

非常有启发性的答案。您提供的解决方案非常有效。我会在几分钟内将您的答案标记为已接受