Как не отображать данные из базы при запуске? - PullRequest
0 голосов
/ 19 января 2019

Я не хочу отображать все данные из базы данных при запуске. Я хочу просто оставить все пустым , пока пользователь не введет в текстовое поле ничего . Нравится поиск. Пожалуйста, кто-нибудь, помогите мне с этим.

private void tKeyReleased(java.awt.event.KeyEvent evt) {                              
    //keyboard searching
    try{
        javax.swing.table.DefaultTableModel dtm=
            (javax.swing.table.DefaultTableModel)rTable.getModel();
        int rc=dtm.getRowCount();
        while(rc--!=0){
            dtm.removeRow(0);
        }
        dtm.setRowCount(0);
        String n=t.getText();
        db.dbConnect.getUsers.setString(1,"%"+n+"%");
        ResultSet rs=db.dbConnect.getUsers.executeQuery();
        while(rs.next()){
            java.util.Vector row=new java.util.Vector();
            row.add(rs.getInt("cid"));
            row.add(rs.getString("name"));
            row.add(rs.getString("gender"));
            row.add(rs.getDate("dob"));
            row.add(rs.getString("country"));
            row.add(rs.getString("address"));
            row.add(rs.getString("language"));
            dtm.addRow(row);
        }
    } catch(Exception ex) {
          JOptionPane.showMessageDialog(null, ex);
    }
}               

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Если вы хотите получать данные только тогда, когда пользователь нажимает Enter (как в некоторых поисковых приложениях), тогда вы можете просто добавить ActionListener.

JTextField searchField = new JTextField(20);
searchField.addActionListener(new ActionListener()
{
  @Override
  public void actionPerformed(ActionEvent e)
  {
    System.out.println("Fetch data");
  }
});
0 голосов
/ 19 января 2019

Вы можете добавить DocumentListener в свое текстовое поле и проверить, превышает ли длина текстового поля порог X.

Примечание: Точно так же, как MadProgrammer сказал, что вы хотите добавить таймер, чтобы избежать слишком большого количества обращений к базе данных.

Спасибо MadProgrammer за указание на это.

       JTextField textField = new JTextField(20);

            DocumentListener documentListener = new DocumentListener() {

                @Override
                public void insertUpdate(DocumentEvent e) {
                    onTextChange();
                }

                @Override
                public void removeUpdate(DocumentEvent e) {
                    onTextChange();
                }

                @Override
                public void changedUpdate(DocumentEvent e) {
                    onTextChange();
                }

                public void onTextChange() {
                    String text = textField.getText();
                    if(text.length() > 0){
                         // display the data
                    }
                }
            };

            textField .getDocument().addDocumentListener(documentListener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...