三个初级问题 每个20分 急用 在线等 题解结贴
自己用swing类做个小程序遇到3个问题
初学,问题应该比较简单,编译无错误,但是功能并没有实现
1,程序里用到了菜单,一共4个菜单项,点击不同的菜单项在窗口的内容面板中加入不同的界面问题出现了,点击第一个菜单项后,界面顺利出现了,点击第二个菜单项后,两个界面重叠 在一起了,其实我知道问题出在哪里,在awt里可以用removeAll函数解决这个问题,但是在swing里使用这个函数就运行不下去了,直接死机了
想问一下,应该用什么函数。
2,程序中用到了模糊查询,输入了姓之后,点击查询,列表没反映,先说明,程序里的精确查询功能没问题,说明数据库之类的东西没发生错误,我觉得是SQL语句好象写的不对,但是不知道怎么改,模糊查询功能的代码如下:
class 模糊查询 extends JPanel implements ActionListener
{
JButton button;
JTextField text;
Object a[][];
Object name[]={"姓名","性别","通讯地址","联系方式"};
JLabel label,label1,label2;
JPanel panel1,panel2,panel3;
JTable table;
模糊查询()
{ setLayout(new BorderLayout());
label1=new JLabel(" ");
label2=new JLabel(" ");
label=new JLabel("查找姓名");
button=new JButton("确定");
text=new JTextField(20);
panel1=new JPanel();
panel2=new JPanel();
panel3=new JPanel();
a=new Object[20][20];
table=new JTable(a,name);
panel1.add(label);
panel1.add(text);
panel2.add(new JScrollPane(table));
panel3.add(label1);
panel3.add(button);
panel3.add(label2);
add(panel1,BorderLayout.NORTH);
add(panel2,BorderLayout.CENTER);
add(panel3,BorderLayout.SOUTH);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button)
{ try{
mohuchaxun();
}
catch(SQLException ee) {}
}
}
public void mohuchaxun() throws SQLException
{
String c="'"+text.getText().trim()+"%"+"'";
String name,sex,adress,tel;
int i=0;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {}
Connection sql=DriverManager.getConnection("jdbc:odbc:dreambird","","");
Statement go=sql.createStatement();
ResultSet rs=go.executeQuery("SELECT * FROM tongxunlu WHERE 姓名 LIKE c");
boolean boo=false;
while(rs.next())
{name=rs.getString(1);sex=rs.getString(2);adress=rs.getString(3);tel=rs.getString(4);
a[i][0]=name;a[i][1]=sex;a[i][2]=adress;a[i][3]=tel;
boo=true;
i++;
}
if(boo==false)
{JOptionPane.showMessageDialog(this,"查询无此人","错误",JOptionPane.ERROR_MESSAGE);
}
sql.close();
}
}
3,程序中有插入功能,和 上面的问题一样,输入具体内容后,点插入,但是数据库里没有变化
插入功能代码如下:
class 插入 extends JPanel implements ActionListener
{
JLabel label1,label2;
JButton button;
JPanel panel1,panel2;
JTextField text1,text2,text3,text4;
插入()
{
text1=new JTextField(16);
text2=new JTextField(16);
text3=new JTextField(16);
text4=new JTextField(16);
label1=new JLabel(" ");
label2=new JLabel(" ");
button=new JButton("确定插入");
panel1=new JPanel();
panel2=new JPanel();
setLayout(new BorderLayout());
Box box1,box2,basebox;
box1=Box.createVerticalBox();
box1.add(Box.createVerticalStrut(50));
box1.add(new JLabel("姓名"));
box1.add(Box.createVerticalStrut(50));
box1.add(new JLabel("性别"));
box1.add(Box.createVerticalStrut(50));
box1.add(new JLabel("通讯地址"));
box1.add(Box.createVerticalStrut(50));
box1.add(new JLabel("联系方式"));
box2=Box.createVerticalBox();
box2.add(Box.createVerticalStrut(50));
box2.add(text1);
box2.add(Box.createVerticalStrut(50));
box2.add(text2);
box2.add(Box.createVerticalStrut(50));
box2.add(text3);
box2.add(Box.createVerticalStrut(50));
box2.add(text4);
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(Box.createHorizontalStrut(25));
basebox.add(box2);
panel1.add(basebox);
panel2.add(label1);
panel2.add(button);
panel2.add(label2);
add(panel1,BorderLayout.CENTER);
add(panel2,BorderLayout.SOUTH);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button)
{ try{
charu();
}
catch(SQLException ee) {}
}
}
public void charu() throws SQLException
{ try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {}
Connection sql=null;Statement go=null;
String s1="'"+text1.getText().trim()+"'",
s2="'"+text2.getText().trim()+"'",
s3="'"+text3.getText().trim()+"'",
s4="'"+text4.getText().trim()+"'";
String s5="INSERT INTO tongxunlu VALUES ("+s1+","+s2+","+s3+","+s4+")";
sql=DriverManager.getConnection("jdbc:odbc:dreambird","","");
go.executeUpdate(s5);
sql.close();
}
}
最后想问个小问题(这个没分。。。)
我在查询里用到了表格,查询以后,需要人为的点击表格,查找的内容才能在上面显示,有没有函数能直接显示一下啊,估计就是个刷新函数吧,请问是什么。。。。。
因为是初学,代码可能比较垃圾,比较冗余,大家别笑话,都是这么过来的。。。。。。