gpt4 book ai didi

java - 调用采用 ActionListener 内参数的方法

转载 作者:行者123 更新时间:2023-12-01 09:38:30 24 4
gpt4 key购买 nike

我在尝试调用实现 actionListener 的类中的方法时遇到问题。被调用的方法 DataCompiler 需要使用整数 wordCountWhole,该整数在 wordCount 类中返回。问题是我无法将所需的参数传递给 actionListener 方法

 import javax.swing.*;
import java.awt.*;
import java.awt.List;
import java.awt.event.*;
import java.beans.PropertyChangeListener;
import java.text.BreakIterator;
import java.util.*;
import java.util.stream.IntStream;

public class GUI extends JFrame {
public JTextArea textInput;
public JButton dataButton;
public String str;

public GUI() {
super("Text Miner");
pack();
setLayout(null);

dataButton = new JButton("View Data"); //Button to take user to data table
dataButton.setSize(new Dimension(120, 50));
dataButton.setLocation(5, 5);
Handler event = new Handler(); //Adds an action listener to each button
dataButton.addActionListener(event);
add(dataButton);

public class wordCount {
public int miner() {
//This returns an integer called wordCountWhole
}
}

public class Handler implements Action { //All the possible actions for when an action is observed

public void action(ActionEvent event, int wordCountWhole) {

if (event.getSource() == graphButton) {
Graphs g = new Graphs();
g.Graphs();
} else if (event.getSource() == dataButton) {
DataCompiler dc = new DataCompiler();
dc.Data(wordCountWhole);
} else if (event.getSource() == enterButton) {
wordCount wc = new wordCount();
sentenceCount sc = new sentenceCount();
wc.miner();
sc.miner();
}
}
}
}

这是 DataCompiler 类的代码:

public class DataCompiler{
public void Data(int wordCountWhole){
int m = wordCountWhole;
System.out.println(m);
}
}

最佳答案

您没有在此处添加参数,因为您已经使接口(interface)的约定无效。

使用构造函数*(首先参见下面的注释)

public class Handler implements Action{ //All the possible actions for when an action is observed

private int wordCountWhole;

public Handler(int number) { this.wordCountWhole = number; }

@Override
public void actionPerformed(ActionEvent event) {
<小时/>

虽然,但并不完全清楚为什么需要该号码。您的 DataCompiler.Data 方法仅打印传递给它的数字,并且该变量似乎来自代码中的任何地方,因为它没有传递给 ActionListener。

* 您应该在 Handler 类/监听器代码中使用 Integer.parseInt(textInput.getText().trim()) 而不是使用构造函数。否则,当您添加处理程序时,您总是会得到数字值,这将是一个空字符串并抛出错误,因为文本区域中没有数字。

此外,wc.miner(); 返回一个值,但单独调用它而不将其分配给数字只会丢弃该返回值。

关于java - 调用采用 ActionListener 内参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38636564/

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