问题是:运行后,点击下拉列表的  画直线    然后正常的话应该出现所画的一条直线,
但是现在的情况是 
那条直线只是一闪而过,然后就不见了 
但是如果此后在下拉列表中先点选其他的选项,再返回  画直线  就会正常显示,所以就感觉有点诡异,但有解决不了,所以请各位大虾帮帮忙了 代码如下:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class  a
{
public static void main(String[] args) 
{
huitu hh=new huitu();
}
}class huitu extends JFrame implements ItemListener
{
Container con;

JComboBox list,list1,list2;
JLabel label,label1,label2,label3;
Box box1,box2,box3;
String s1,s2,s3,s4,s5;
JPanel panel1,panel2;
JTextField text1;
JButton button1;
Graphics g;
public huitu()
{
box1=Box.createHorizontalBox();
box2=Box.createHorizontalBox();
box3=Box.createVerticalBox();

text1=new JTextField(3); button1=new JButton("输入数据"); panel1=new JPanel();
panel1.validate();
panel1.setVisible(true);

s1=new String("画直线");
s2=new String("画圆");
s3=new String("区域填充");
s4=new String("平移变换");
s5=new String("裁剪");
label=new JLabel("请选择:");
label1=new JLabel("线形");
label2=new JLabel("线宽");
label3=new JLabel("颜色"); list=new JComboBox();
list1=new JComboBox();
list2=new JComboBox(); list.addItem("从以下选项中选择:");
list.addItem(s1);
list.addItem(s2);
list.addItem(s3);
list.addItem(s4);
list.addItem(s5);
box1.add(label);
box1.add(Box.createHorizontalStrut(10));
box1.add(list); box2.add(label1);
box2.add(Box.createHorizontalStrut(5));
box2.add(list1);
box2.add(Box.createHorizontalStrut(5));
box2.add(label2);
box2.add(Box.createHorizontalStrut(5));
box2.add(text1);
box2.add(Box.createHorizontalStrut(5));
box2.add(label3);
box2.add(Box.createHorizontalStrut(5));
box2.add(list2);
box2.add(Box.createHorizontalStrut(5));
box2.add(button1);
box2.setVisible(false); box3.add(box1);
box3.add(Box.createVerticalStrut(5));
box3.add(box2); con=getContentPane();
con.setLayout(new BorderLayout());
setSize(700,750);
con.add(box3,BorderLayout.NORTH);
setResizable(false);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
list.addItemListener(this);
}
public void initLine()
{
//con.add(box3,BorderLayout.NORTH);
box2.setVisible(true);
con.add(panel1,BorderLayout.CENTER);
con.validate();
g =panel1.getGraphics();
panel1.setVisible(true);
g.drawLine(0,0,100,200);
}
public void itemStateChanged(ItemEvent e)
{
if (list.getSelectedIndex()==1)
{
initLine();
}
}
}