即时通讯使用java swing我想让搜索框与谷歌相同所以我使用texfiels和Jlist以及从数据库中添加的值,其中List在程序开始时设置为可见(false)并且当数据变为可见(true)时进入JlistModel。
我将使用JOptionpane.showMesssageDialoge模拟程序我在RemoveAllElement上发现了错误
我的源代码是,
TMSearch=new JTextField();
TMSearch.setBounds(200,220,350,30);
add(TMSearch);
TMSearch.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent ke)
{
String QueryValue;
if(ke.getKeyChar()== '\b' )
{
QueryValue=TMSearch.getText();
}
else
{
QueryValue=TMSearch.getText()+ke.getKeyChar();
}
if(ke.getKeyChar()== '\b' && TMSearch.getText().length() == 0 )
{
BMReset.doClick();
}
try
{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost/medi","root","");
if(con==null)
{
JOptionPane.showMessageDialog(null,"ERROR");
}
MListModel.removeAllElements();
ps=con.prepareStatement("select * from medicine where cname like ? or mname like ?");
ps.setString(1,QueryValue.concat("%"));
ps.setString(2,QueryValue.concat("%"));
rs=ps.executeQuery();
while(rs.next())
{
int mid=rs.getInt("mid");
String cname=rs.getString("cname");
String mname=rs.getString("mname");
float price=rs.getFloat("price");
String date=rs.getString("exp_date");
int mpunit=rs.getInt("mpunit");
int quantity=rs.getInt("quantity");
String temp;
temp=mid+" "+cname+" "+mname+" "+price+" "+date+" "+mpunit+" "+quantity;
MListModel.addElement(temp);
MListPane.setVisible(true);
ListFlag=1;
}
}
catch (ClassNotFoundException e)
{
}
catch (SQLException e)
{
}
catch (Exception e)
{
}
}
});
答案 0 :(得分:1)
不要使用null布局。 Swing旨在与Layout Managers一起使用。
学习和使用Java命名约定。 Java变量名称不应以大写字符开头。
不要使用空{} catch块。显示异常,以便您了解问题所在。
不要使用KeyListener。相反,您应该使用DocumentListener来监听文本字段中的更改。有关详细信息,请参阅How to Write a Document Listener。
不要使用JList。 JTable更适合在列中显示数据。查看我给你的上述教程链接中的目录。您会在How to Use Tables
上找到一个部分。
我建议您轻松访问Swing教程,因为它包含所有Swing基础知识。