[ НЕ РЕШАВА ] проблем с модел на списък list.removeAllElements java swing

използвам java swing и искам да направя полето за търсене същото като google, така че използвах texfiels и Jlist и стойности, добавени в него от базата данни, където List е setvisible (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) 
        {
        }   




        }
    }); 

person Mayur    schedule 29.01.2014    source източник
comment
Несвързано: Моля, научете конвенциите за именуване на Java и се придържайте към тях.   -  person kleopatra    schedule 30.01.2014


Отговори (1)


  1. Не използвайте нулево оформление. Swing е проектиран да се използва с мениджъри на оформление.

  2. Научете и използвайте конвенциите за именуване на Java. Имената на Java променливите НЕ трябва да започват с главна буква.

  3. Не използвайте празни блокове {} catch. Покажете изключението, за да имате представа какъв е проблемът.

  4. Не използвайте KeyListener. Вместо това трябва да използвате DocumentListener за слушател за промени в текстовото поле. Вижте Как да напишете приемник на документи за повече информация.

  5. Не използвайте JList. JTable е по-добър за показване на данни в колони. Разгледайте съдържанието на горните връзки за уроци, които ви дадох. Ще намерите раздел на How to Use Tables.

Предлагам ви да поддържате лесен достъп до урока за Swing, тъй като той съдържа всички основи на Swing.

person camickr    schedule 29.01.2014
comment
да Аз съм начинаещ, така че не знам много за ефективното програмиране на Java. благодаря за ценната информация. - person Mayur; 30.01.2014