import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
public class SimpleSearchEngineGUI extends JFrame {
private JTextField searchField;
private JList<String> resultList;
private DefaultListModel<String> listModel;
private List<String> dataStore; // Your data source
public SimpleSearchEngineGUI() {
setTitle("Simple Search Engine");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// Initialize data (replace with your actual data loading)
dataStore = new ArrayList<>();
dataStore.add("Apple is a fruit.");
dataStore.add("Banana is a yellow fruit.");
dataStore.add("Carrot is a vegetable.");
dataStore.add("Another apple pie recipe.");
// Search Panel
JPanel searchPanel = new JPanel();
searchField = new JTextField(20);
JButton searchButton = new JButton("Search");
searchPanel.add(searchField);
searchPanel.add(searchButton);
add(searchPanel, BorderLayout.NORTH);
// Result List
listModel = new DefaultListModel<>();
resultList = new JList<>(listModel);
JScrollPane scrollPane = new JScrollPane(resultList);
add(scrollPane, BorderLayout.CENTER);
// Event Listener
searchButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
performSearch();
}
});
searchField.addActionListener(new ActionListener() { // Allow Enter key to trigger search
@Override
public void actionPerformed(ActionEvent e) {
performSearch();
}
});
}
private void performSearch() {
String query = searchField.getText().toLowerCase();
listModel.clear(); // Clear previous results
if (query.isEmpty()) {
// Optionally show all data or a message
for (String item : dataStore) {
listModel.addElement(item);
}
return;
}
for (String item : dataStore) {
if (item.toLowerCase().contains(query)) {
listModel.addElement(item);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SimpleSearchEngineGUI().setVisible(true);
}
});
}
}
Tidak ada komentar:
Posting Komentar