Java 从另一个私有类调用arrayList

Java 从另一个私有类调用arrayList,java,swing,arraylist,actionevent,Java,Swing,Arraylist,Actionevent,我试图在gui中显示arraylist。但是我遇到了一些麻烦。我需要检查我的游戏是否合法,如果它不合法,那么它会调用getProblems来显示arraylist。我试图在GUI类中直接调用getProblems,但是它会将数组显示为空。(因为它没有检查它是否合法)。我还尝试调用isLegal然后调用getProblems,但您无法在作业窗格中执行此操作。有什么建议可以叫它accross吗 获取问题类 protected List < String > getProblems()

我试图在gui中显示arraylist。但是我遇到了一些麻烦。我需要检查我的游戏是否合法,如果它不合法,那么它会调用getProblems来显示arraylist。我试图在GUI类中直接调用getProblems,但是它会将数组显示为空。(因为它没有检查它是否合法)。我还尝试调用isLegal然后调用getProblems,但您无法在
作业窗格中执行此操作。有什么建议可以叫它accross吗

获取问题类

 protected List < String > getProblems() {
     return displayOutput;
 }
图形用户界面:

这里是GUI结果的实际显示和我试图得到的结果之间的差异

发现的进一步问题: 我需要返回arraylist,然后清空它。固定的


目前,在
JOptionPane
中调用
puzzle.getProblems()
时,会隐式调用
List
toString()
方法。因此,与其得到您想要的
列表的内容,不如得到
toString()
提供给您的任何内容

除非先对列表进行迭代,否则无法获取该列表的内容

你可以试试这样的。(注意,这是未经测试的代码。用于演示。)

然后可以输出此格式化的
字符串

 public void actionPerformed(ActionEvent e) {
     if (!(puzzle.isLegal())) {
       JOptionPane.showMessageDialog(FutoshikiFrame.this,
         formattedString,
         "You made a mistake!",
         JOptionPane.INFORMATION_MESSAGE);

我很惊讶,即使是编译,因为当您在
getProblems()
@TEK Adjusted中将返回类型指定为
List
时,您试图返回
字符串,当我将代码粘贴到stackoverflow中时,我忘了删除顶行(正在格式化数组,以便只打印方括号内的字符,例如:“Hi”而不是“[Hi]”)
 public void actionPerformed(ActionEvent e) {
     if (!(puzzle.isLegal())) {
       JOptionPane.showMessageDialog(FutoshikiFrame.this,
         puzzle.getProblems(),
         "You made a mistake!",
         JOptionPane.INFORMATION_MESSAGE);
String formattedString = "";
//let's iterate over our List and build a formatted string for output
for(String element : puzzle.getProblems())
{
    formattedString += element;
}
 public void actionPerformed(ActionEvent e) {
     if (!(puzzle.isLegal())) {
       JOptionPane.showMessageDialog(FutoshikiFrame.this,
         formattedString,
         "You made a mistake!",
         JOptionPane.INFORMATION_MESSAGE);