Java JTextArea未重置值
我不确定这到底是JTextArea问题还是ActionListener问题还是其他问题 我的程序所做的是从给定的URL获取详细信息,并在按下按钮时将其显示在JTextArea中。以下是我遇到问题的代码:Java JTextArea未重置值,java,user-interface,Java,User Interface,我不确定这到底是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 p
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);
}
问题是,每次提供一个新的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()的方法
问题就在这里
for(Element results : dateData) {
dates.add(results.text());
}
您正在将新的元素
实例添加到日期
中,但从未删除它们。
加上
在webData.setup(url)之前代码>
所以
public void displayResults(字符串url,JTextArea){
//集数
int num=1;
日期。清除();
//从JTextField获取URL,该URL将作为此方法的参数传递
webData.setup(url);
字符串结果=”;
对于(int i=0;i
问题可能出在webData.setup(url)中代码>方法。你能发布它的来源吗?你好。我已经在编辑过的主要帖子中添加了这个方法,因为我在这里发布的字符已经用完了。但这不是问题所在。在它自己的类中使用main方法之前,我已经测试过它,它没有产生任何重复。问题只在我从GUI运行多个URL时出现。@CharmingPotato如果有效,你应该投票并接受我的答案:)谢谢,很高兴我帮助了Edi,但它不会让我投票,因为我没有15个声誉:(
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());
}
dates.clear();
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);
}