Java 使用repaint()方法时出现JComboBox错误

Java 使用repaint()方法时出现JComboBox错误,java,jcombobox,Java,Jcombobox,我是Java新手,我正在创建一个带有时区的时钟。 我对JComboBox的repaint方法有点问题。 如果我在代码中放入repaint(),我就看不到小程序窗口中的JComboBox,如果我删除repaint(),它就会可见。正如您所知,在代码中放入repaint()是非常必要的 我做错了什么 ` 软件包应用程序 导入java.awt.* 导入java.awt.event.* 导入java.util.Calendar 导入javax.swing.* 公共类Alarm2扩展JFrame实现Ite

我是Java新手,我正在创建一个带有时区的时钟。 我对
JComboBox
repaint
方法有点问题。 如果我在代码中放入
repaint()
,我就看不到小程序窗口中的
JComboBox
,如果我删除
repaint()
,它就会可见。正如您所知,在代码中放入repaint()是非常必要的

我做错了什么

` 软件包应用程序

导入java.awt.*

导入java.awt.event.*

导入java.util.Calendar

导入javax.swing.*

公共类Alarm2扩展JFrame实现ItemListener,Runnable{

private Graphics dbg;

private Image dbImage;

JComboBox c=new JComboBox();

Thread t;

int h,m,s;

boolean alarm=false;

String time="";



TextField tf=new TextField("SEX:",10);

Alarm2(){





  setTitle("BALVEER");

  setSize(250,250);

  setResizable(false);

  setLocationRelativeTo(null);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  c.addItem("MALE");

  c.addItem("FEMALE");

  setBackground(Color.GREEN);


  c.addItemListener(this);

  add(c);

  add(tf);

  setLayout(new FlowLayout(FlowLayout.RIGHT,10,195));

  setVisible(true);


}
公共图书馆(aisha){

公开募捐{

}

公共无效itemStateChanged(ItemEvent e){


}`

永远不要从
paint
paintComponent
调用
repaint
。这会创建一个无限循环,因为
repaint
将导致再次调用
paint
。也就是说,您的语句不正确:除非自定义绘图的参数发生更改,否则不需要调用
repaint
。嘿guy,…也许你是对的,但是在JComboBox出现之前,repaint()不是问题!!!你在这里…我刚刚编辑了这个程序,现在再检查一下!!!实际上是JComboBox产生了问题!!在这里Jcombo框和“时间”一次都不可见…最好用你的概念来解决这个问题,…提前谢谢
t=new Thread(this);

t.start();



}
   try{

       while(true){

       Calendar cal=Calendar.getInstance();

        h=cal.get(Calendar.HOUR);

        m=cal.get(Calendar.MINUTE);


        s=cal.get(Calendar.SECOND);

        t.sleep(1000);

        time=" "+h+" : "+m+" : "+s;

               repaint();



       }



   }

   catch(Exception e){



   }
  tf.setText("SEX: "+e.getItem());

}



public void paint(Graphics g){

dbImage =createImage(getWidth(),getHeight()); 


dbg=dbImage.getGraphics();

draw(dbg);

g.drawImage(dbImage,0,0,this);

}

public void draw(Graphics g){

    g.setColor(Color.red);

    g.drawString("TIME:"+time, 50, 100);



}

public static void main(String[] args) {

      Alarm2 java=new Alarm2();

      java.aisha();

}