Я создаю проект с механизмом поиска, который ищет данные по 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
.
Спасибо