Java 使用repaint()方法时出现JComboBox错误
我是Java新手,我正在创建一个带有时区的时钟。 我对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
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();
}