从另一个私有的 class 调用 arrayList
Calling an arrayList from another class which is private
我正在尝试在图形用户界面中显示数组列表。但是我遇到了一些麻烦。我需要检查我的游戏是否合法,如果不合法则调用显示数组列表的 getProblems。我试图在 GUI class 中直接调用 getProblems,但它会将数组显示为空。 (因为它不检查它是否合法)。我还尝试调用 isLegal,然后调用 getProblems,但您不能在 JOptionPane
中执行此操作。关于如何调用它的任何提示?
GetProblems class
protected List < String > getProblems() {
return displayOutput;
}
合法Class
public boolean isLegal() {
boolean legality;
if (checkRowConstraints().isEmpty()) {
legality = true;
} else {
getProblems();
legality = false;
}
return legalCheck;
}
图形用户界面:
public void actionPerformed(ActionEvent e) {
if (!(puzzle.isLegal())) {
JOptionPane.showMessageDialog(FutoshikiFrame.this,
puzzle.getProblems(),
"You made a mistake!",
JOptionPane.INFORMATION_MESSAGE);
这是 GUI 结果的实际显示与我尝试获得的结果之间的差异。
Further Problem found:
I need to return the arraylist then empty it. Fixed
目前,当您在 JOptionPane
中调用 puzzle.getProblems()
时,会隐式调用 List
的 toString()
方法。因此,您得到的不是您想要的 List
的内容,而是 toString()
给您的任何内容。
您不会获得 List
的内容,除非您先对其进行迭代。
你可以尝试这样的事情。 (注意,这是未经测试的代码。用于演示目的。)
String formattedString = "";
//let's iterate over our List and build a formatted string for output
for(String element : puzzle.getProblems())
{
formattedString += element;
}
然后你可以输出这个格式化String
public void actionPerformed(ActionEvent e) {
if (!(puzzle.isLegal())) {
JOptionPane.showMessageDialog(FutoshikiFrame.this,
formattedString,
"You made a mistake!",
JOptionPane.INFORMATION_MESSAGE);
我正在尝试在图形用户界面中显示数组列表。但是我遇到了一些麻烦。我需要检查我的游戏是否合法,如果不合法则调用显示数组列表的 getProblems。我试图在 GUI class 中直接调用 getProblems,但它会将数组显示为空。 (因为它不检查它是否合法)。我还尝试调用 isLegal,然后调用 getProblems,但您不能在 JOptionPane
中执行此操作。关于如何调用它的任何提示?
GetProblems class
protected List < String > getProblems() {
return displayOutput;
}
合法Class
public boolean isLegal() {
boolean legality;
if (checkRowConstraints().isEmpty()) {
legality = true;
} else {
getProblems();
legality = false;
}
return legalCheck;
}
图形用户界面:
public void actionPerformed(ActionEvent e) {
if (!(puzzle.isLegal())) {
JOptionPane.showMessageDialog(FutoshikiFrame.this,
puzzle.getProblems(),
"You made a mistake!",
JOptionPane.INFORMATION_MESSAGE);
这是 GUI 结果的实际显示与我尝试获得的结果之间的差异。
Further Problem found: I need to return the arraylist then empty it. Fixed
目前,当您在 JOptionPane
中调用 puzzle.getProblems()
时,会隐式调用 List
的 toString()
方法。因此,您得到的不是您想要的 List
的内容,而是 toString()
给您的任何内容。
您不会获得 List
的内容,除非您先对其进行迭代。
你可以尝试这样的事情。 (注意,这是未经测试的代码。用于演示目的。)
String formattedString = "";
//let's iterate over our List and build a formatted string for output
for(String element : puzzle.getProblems())
{
formattedString += element;
}
然后你可以输出这个格式化String
public void actionPerformed(ActionEvent e) {
if (!(puzzle.isLegal())) {
JOptionPane.showMessageDialog(FutoshikiFrame.this,
formattedString,
"You made a mistake!",
JOptionPane.INFORMATION_MESSAGE);