[НЕ РЕШЕНО] проблема с моделью списка list.removeAllElements java swing

я использую Java Swing, и я хочу сделать окно поиска таким же, как Google, поэтому я использовал texfiels и Jlist и значения, добавленные в него из базы данных, где список установлен видимым (ложным) при запуске программы, и он становится видимым (истинным), когда данные вводятся в 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