gpt4 book ai didi

java - 如何修复此 ActionListener 以将字符串传回小部件

转载 作者:行者123 更新时间:2023-12-01 14:50:45 26 4
gpt4 key购买 nike

我对 Java 还很陌生,只是在练习 ActionListener。作为我开发的应用程序的一部分,我将有一个 JTextField 允许用户搜索名称,然后有一个 JTextArea 来显示搜索结果。我有一个用于搜索和确定名称的 api,唯一的问题是将小部件连接到方法和操作监听器文件。

以下是部分代码:

小部件文件:

//Text Field
JTextField searchbox = new JTextField();
leftSide.add(searchbox, cnt);

String userText = searchbox.getText();
ActionListener sendsText = new SearchListener(search box);
searchbox.addActionListener(sendsText);


//TextArea
JTextArea stationList = new JTextArea(12, 0);
leftSide.add(stationList, cnt);

String entered = userText;
stationList.append(entered);

搜索监听器:

    public class SearchListener implements ActionListener {
private JTextField searchbox;
private JTextArea stationList;


public SearchListener(JTextField search box) {
this.searchbox = searchbox;
}
public void ListF(JTextArea stationList){
this.stationList = stationList;

public void actionPerformed(ActionEvent event) {
XXXX<NAMES> stations = HHHH.SimilarNames(searchbox.getText());

for (NAMES station : stations) {
//System.out.println(station);

*Problem*> String result = (searchbox.getText());
*Problem*> stationList.append(result);

}

因此,在这个程序中,TextFiels 已连接并且 ActionListener 正在工作,但它会打印出 CMD 中类似名称的列表(我在这里对其进行了评论)。但我希望它将列表发送回 API 中的文本区域。(小部件文件)。所以我不确定 SearchListener 顶部的 ActionListener 方法是否正确。另外,代码中的问题是我厌倦了将搜索结果传递到文本字段,但这不起作用。

有人知道如何解决吗?

提前致谢。

最佳答案

我认为您可能会扭曲一些事情,但这也许就是您想要实现的目标:

搜索字段的值决定文本区域的填充内容。

如果是这种情况,那么有些事情必须改变。首先,只有 ActionListener 中的代码才会在 UI 事件发生时执行,因此没有理由调用 getText()初始化期间任何 UI 元素上。

其次,向此 UI 添加按钮大大简化了此处的逻辑。如果将监听器附加到搜索框,就会出现诸如“我什么时候知道用户已完成文本输入?”之类的问题。和“如何处理部分文本?”,但是使用“搜索”按钮会将这个逻辑交给用户。

单击“搜索”按钮后,将触发附加到该按钮的监听器的操作事件,并且 stationListArea将填充 similarNames(<text from search box>) 的结果.

请注意,虽然下面显示的不是执行此任务的最干净的方法(这将涉及字段和匿名内部类),但它很简单且易于理解。

小部件(不确定 cnt 是什么,所以我在下面的示例代码中省略了)

//Create the search text box
JTextField searchBox = new JTextField();
leftSide.add(searchBox);

// Create a button that will serve as the "Action" for the search box
JButton searchButton = new JButton("Search");
lefSide.add(searchButton);

// Create the station-list text area that will display text
// based on results from the search box
JTextArea stationListArea = new JTextArea(12, 0);
leftSide.add(stationListArea);

// Create a listener that listens to the Button, then performs an
// action from the search box to the text area
ActionListener searchButtonListener = new SearchListener(searchBox, stationListArea);
searchButton.addActionListener(searchButtonListener);

搜索监听器

注意:这里的逻辑将继续将文本添加到您的stationListArea中。每次单击按钮时 HHHH.SimilarNames()返回一个值。拥有stationListArea只需每次更新新文本,替换旧文本,添加 stationListArea.setText("") actionPerformed()开头.

public class SearchListener implements ActionListener {
private JTextField searchBox;
private JTextArea stationListArea;

public SearchListener(JTextField searchBox, JTextArea stationListArea) {
this.searchBox = searchBox;
this.stationListArea = stationListArea;
}

public void actionPerformed(ActionEvent event) {
XXXX<NAMES> stations = HHHH.SimilarNames(searchBox.getText());

for (NAMES station : stations) {
stationListArea.append(station);
}
}
}

关于java - 如何修复此 ActionListener 以将字符串传回小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887781/

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