gpt4 book ai didi

java - 如何制作搜索按钮 Action 事件?

转载 作者:行者123 更新时间:2023-12-02 09:19:26 26 4
gpt4 key购买 nike

GUI 有一个搜索栏,当用户键入一本书并单击搜索时,它会在 JList 上弹出。但我不知道如何编写它的代码。

public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
// Action for the SEARCH button

最佳答案

将原始未过滤的数据保留在结构中(例如 ArrayList),并将 DocumentListener 添加到搜索文本字段,以便了解搜索文本是否已更改。然后,从 JList 的模型中过滤原始数据和 removeAllElements()。最后将过滤后的数据添加到JList的模型中。

示例:

public class SearchInJList extends JFrame implements DocumentListener {
private static final long serialVersionUID = -1662279563193298340L;
private JList<String> list;
private List<String> data;
private DefaultListModel<String> model;
private JTextField searchField;

public SearchInJList() {
super("test");
setDefaultCloseOperation(EXIT_ON_CLOSE);

setLayout(new BorderLayout());

searchField = new JTextField();
searchField.getDocument().addDocumentListener(this);
add(searchField, BorderLayout.PAGE_START);

createData();

list = new JList<>(model = new DefaultListModel<>());
data.forEach(model::addElement);
add(new JScrollPane(list), BorderLayout.CENTER);

setSize(500, 500);
setLocationByPlatform(true);
}

private void createData() {
data = new ArrayList<String>();
for (int i = 0; i < 1000; i++) {
String s = "String: " + i + ".";
data.add(s);
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
SearchInJList example = new SearchInJList();
example.setVisible(true);
});
}

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

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

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

private void search() {
List<String> filtered = data.stream().filter(s -> s.toLowerCase().contains(searchField.getText().toLowerCase()))
.collect(Collectors.toList());

model.removeAllElements();
filtered.forEach(model::addElement);
}
}

它不能使用按钮,但我想这是你可以做的事情。我的意思是,将 search() 方法添加到按钮的操作监听器中。

关于java - 如何制作搜索按钮 Action 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com