gpt4 book ai didi

Java JTextArea 不重置值

转载 作者:行者123 更新时间:2023-11-30 06:13:42 26 4
gpt4 key购买 nike

我不确定这实际上是 JTextArea 问题还是 ActionListener 问题还是其他问题。

我的程序所做的是从给定的 URL 获取详细信息,并在按下按钮时将其显示在 JTextArea 中。这是我遇到问题的代码:

public void displayResults(String url, JTextArea area) {

//number of episode
int num = 1;

//Get the URL from JTextField that will be passed as a parameter of this method
webData.setup(url);

String result = "";

for (int i = 0; i < webData.getDates().size(); i++) {
result += "Episode " + num++ + ": " + webData.getEpisodeTitle().get(i) + "\n" + "Air date: "
+ webData.getDates().get(i) + "\n\n";
}
//Set the text of JTextArea with the values produced in loop above
area.setText(result);
}

和 Action 监听器:

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == submitButton && !urlField.getText().equals("")) {
displayResults(urlField.getText(), resultsTextArea);
}

问题是每次提供新的 URL 时,它也会显示前一个 URL 的结果。例如,如果我运行该程序并给它 URL #1,它将显示 20 个结果(假设它有 20 个结果),并且当提供下一个 URL 时,它仍然会显示 URL #1 和之前的 20 个结果然后显示 21 中 URL #2 的结果。如下所示:

Episode 22: Not aired yet!
Air date: 18 May 2018

Episode 23: The Flash Reborn
Air date: 10 Oct. 2017

^这些是两个不同 URL 的结果。我希望 URL #2 结果从 num=1 开始,而不是在 URL #1 停止的地方递增。有没有办法在每次按下按钮时重置 JTextArea 值?我对此真的很陌生,因此我们将不胜感激任何帮助!

编辑:这是 webData.setup() 的方法

public void setup(String url) {

try {
site = Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
dateData = site.select("div.airdate");
titleData = site.select("a[itemprop='name']");
showTitle = site.select("a.subnav_heading").first();

for(Element results : dateData) {
dates.add(results.text());
}

for(Element results : titleData) {
if(results.text().contains("Episode #")) {
episodeTitles.add("Not aired yet!");
} else {
episodeTitles.add(results.text());
}
}

}

最佳答案

问题就出在这里

for(Element results : dateData) {
dates.add(results.text());
}

您正在向日期添加新的Element实例,但从未删除它们。只需添加

dates.clear();

之前webData.setup(url);

所以

public void displayResults(String url, JTextArea area) {

//number of episode
int num = 1;
dates.clear();

//Get the URL from JTextField that will be passed as a parameter of this method
webData.setup(url);

String result = "";

for (int i = 0; i < webData.getDates().size(); i++) {
result += "Episode " + num++ + ": " + webData.getEpisodeTitle().get(i) + "\n" + "Air date: "
+ webData.getDates().get(i) + "\n\n";
}
//Set the text of JTextArea with the values produced in loop above
area.setText(result);
}

关于Java JTextArea 不重置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49691049/

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