Java Swing — это мощная библиотека для создания графических пользовательских интерфейсов (GUI) на Java. В этой статье мы углубимся в создание панели Java Swing для поиска в базе данных. Мы рассмотрим различные методы и предоставим примеры кода, которые помогут вам понять и реализовать эту функциональность в ваших приложениях Java. Давайте начнем!
-
Метод 1. Использование JDBC для подключения к базе данных
// Import required libraries import java.sql.*; import javax.swing.*; // Create a Swing panel with search components JPanel searchPanel = new JPanel(); JTextField searchField = new JTextField(20); JButton searchButton = new JButton("Search"); JTable resultTable = new JTable(); JScrollPane scrollPane = new JScrollPane(resultTable); // Implement search functionality using JDBC searchButton.addActionListener(e -> { String searchTerm = searchField.getText(); try { // Establish database connection Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password"); // Execute search query String query = "SELECT * FROM table WHERE column LIKE '%" + searchTerm + "%'"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query); // Populate result in table DefaultTableModel model = new DefaultTableModel(); model.setColumnIdentifiers(new Object[]{"Column 1", "Column 2", "Column 3"}); while (resultSet.next()) { model.addRow(new Object[]{resultSet.getString(1), resultSet.getString(2), resultSet.getString(3)}); } resultTable.setModel(model); // Close database connection resultSet.close(); statement.close(); connection.close(); } catch (SQLException ex) { ex.printStackTrace(); } }); // Add components to the panel searchPanel.add(searchField); searchPanel.add(searchButton); searchPanel.add(scrollPane); -
Метод 2: реализация фильтра для поиска в реальном времени
// Import required libraries import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; // Create a Swing panel with search components JPanel searchPanel = new JPanel(); JTextField searchField = new JTextField(20); JTable resultTable = new JTable(); JScrollPane scrollPane = new JScrollPane(resultTable); DefaultTableModel tableModel = new DefaultTableModel(); // Implement real-time search using document listener searchField.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { filterTable(); } @Override public void removeUpdate(DocumentEvent e) { filterTable(); } @Override public void changedUpdate(DocumentEvent e) { filterTable(); } private void filterTable() { String searchTerm = searchField.getText(); TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<>(tableModel); resultTable.setRowSorter(sorter); sorter.setRowFilter(RowFilter.regexFilter("(?i)" + searchTerm)); } }); // Add components to the panel searchPanel.add(searchField); searchPanel.add(scrollPane); -
Метод 3. Использование подготовленных утверждений для обеспечения безопасности и производительности
// Import required libraries import java.sql.*; import javax.swing.*; // Create a Swing panel with search components JPanel searchPanel = new JPanel(); JTextField searchField = new JTextField(20); JButton searchButton = new JButton("Search"); JTable resultTable = new JTable(); JScrollPane scrollPane = new JScrollPane(resultTable); // Implement search functionality using prepared statements searchButton.addActionListener(e -> { String searchTerm = searchField.getText(); try { // Establish database connection Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password"); // Prepare search query with parameterized statement String query = "SELECT * FROM table WHERE column LIKE ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, "%" + searchTerm + "%"); ResultSet resultSet = statement.executeQuery(); // Populate result in table DefaultTableModel model = new DefaultTableModel(); model.setColumnIdentifiers(new Object[]{"Column 1", "Column 2", "Column 3"}); while (resultSet.next()) { model.addRow(new Object[]{resultSet.getString(1), resultSet.getString(2), resultSet.getString(3)}); } resultTable.setModel(model); // Close database connection resultSet.close(); statement.close(); connection.close In this article, we explored different methods for implementing a Java Swing panel for searching a database. We covered using JDBC for database connectivity, implementing a real-time search filter, and using prepared statements for security and performance. These methods provide flexibility and efficiency when integrating database search functionality into your Java applications. By leveraging the power of Java Swing and database connectivity, you can create robust and user-friendly interfaces for searching and retrieving data from databases.
Не забудьте адаптировать примеры кода к конкретной схеме и требованиям вашей базы данных. Приятного кодирования!