Я столкнулся с проблемой создания поисковой системы - PullRequest
0 голосов
/ 02 июля 2019

Я создаю проект с механизмом поиска, который ищет данные по Mysql. Предположим, я ищу по таблице пользователей.У меня есть jlistbox и jTextfield.В поле jText пользователь вводит данные для поиска.Существует также jTextArea, в котором хранятся значения, выбранные пользователем.Как только пользователь нажимает на значение списка, он удаляет это значение из списка и помещает его в универсальный vector, который затем перебирает vector для добавления значений в jTextArea.Это происходит в свойстве value changed списка.Вот код

private void li1ValueChanged(javax.swing.event.ListSelectionEvent evt) {                                 
    String user = li1.getSelectedValue();
    if (user != null) {
        universalvector.addElement(user);
        ta1.setText("Selected Users:");
        String[] arr = universalvector.toArray(new String[universalvector.size()]);  //converting vector to array 
        for (int i = 0; i < arr.length; i++) {
            ta1.append("\n" + arr[i]);
        }
        t3.setText("");
        execute("delete from utemp where name='"+user+"'");
        MoveToList();
    }
    // TODO add your handling code here:
}                

, где execute() - это метод, который выполняет SQL-запрос в Mysql.MoveToList() - это метод, который перемещает форму значений utemp (временная пользовательская таблица) в поле списка li1

Теперь в строке поиска в данный момент отображаются только значения в таблице utemp в Mysql которые удовлетворяют критериям поиска в списке li1.Вот код.

 private void t3KeyReleased(java.awt.event.KeyEvent evt) {                               
    try {
        Class.forName("java.sql.Driver");
        Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/user?zeroDateTimeBehavior=convertToNull", "root", "1234");
        String string = t3.getText();
        PreparedStatement pst = conn.prepareStatement("select * from utemp where name like '" + string + "%'");
        ResultSet rs = pst.executeQuery();
        DefaultListModel dlm = new DefaultListModel();
        while (rs.next()) {
            dlm.addElement("" + rs.getString("name"));
        }
        li1.setModel(dlm);
        li1.setSelectedIndex(0); //<--This is what i am having problem with
        conn.close();
        rs.close();
        pst.close();
    } catch (Exception e) {

    }
    // TODO add your handling code here:
}              

Теперь я хочу изменить цвет окна списка на синий, где индекс равен 0, когда пользователь что-то ищет, и когда пользователь нажимает, введите выброшенное значениедолжен быть добавлен в список «Выбранные пользователи» для этого я попытался использовать li1.setSelectedIndex(), но это вызвало свойство value changed списка.

Есть ли способ сделать это, не вызывая value changed propety?

PS

Я бы очень предпочел способы, которые не включают использование ListCellRenderer.

Спасибо

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