Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JOptionPane中以多行打印数组_Java_Arrays_Swing_Jframe - Fatal编程技术网

Java 如何在JOptionPane中以多行打印数组

Java 如何在JOptionPane中以多行打印数组,java,arrays,swing,jframe,Java,Arrays,Swing,Jframe,首先,我不是以英语为母语的人,所以请原谅我的错误^^ 我正在编写一个程序,该程序将所有素数都设置为一个特定的整数,并希望最终在JOptionPane中打印所有素数 实际上,我在一个单独的函数中计算所有的素数,在一个整数数组中返回它们,将这个数组安全地保存到一个字符串中,然后在JOptionPane中打印该字符串 但不幸的是,我只得到一个!!非常长的一行,所有的整数都被打印出来,穿过两个监视器。例如,当我打印10000个素数时,我得到一行中的所有素数 我想,例如,一行中只有100个素数,其余的在下

首先,我不是以英语为母语的人,所以请原谅我的错误^^

我正在编写一个程序,该程序将所有素数都设置为一个特定的整数,并希望最终在JOptionPane中打印所有素数

实际上,我在一个单独的函数中计算所有的素数,在一个整数数组中返回它们,将这个数组安全地保存到一个字符串中,然后在JOptionPane中打印该字符串

但不幸的是,我只得到一个!!非常长的一行,所有的整数都被打印出来,穿过两个监视器。例如,当我打印10000个素数时,我得到一行中的所有素数

我想,例如,一行中只有100个素数,其余的在下一行中打印。但我怎样才能做到这一点呢

    check_button1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

                int x = Integer.parseInt(InputField1.getText());
                int prime_numbers[];


                String all_prime_String = Arrays.toString(number_theory.primes(x));
                System.out.println(Arrays.toString(number_theory.primes(x)));


                JOptionPane.showMessageDialog(Math_Collection_Gui.this, all_prime_String, "Ergebnis",  JOptionPane.INFORMATION_MESSAGE);

        }
    });
数论。primes(x)函数返回x之前所有primes的数组,然后我用字符串保护这个数组


正如我所说,我的问题是,数组的所有值都打印在一行中。那么,有没有可能,为了修正盒子的长度或者其他什么,程序被迫跳转到下一行?或者你还有什么其他窍门吗?

最简单的选择可能是只读文本区:

JTextArea textArea = new JTextArea(all_prime_String, 8, 20);
textArea.setLineWrap(true);
textArea.setEditable(false);

JOptionPane.showMessageDialog(Math_Collection_Gui.this, new JScrollPane(textArea), "Ergebnis",  JOptionPane.INFORMATION_MESSAGE);
如果您想麻烦的话,当然还有更可读的选择,例如将每个值放在JList行中

如果要在文本区域下方放置一些文本,请传递一个对象数组作为JOptionPane的消息:

Object[] message = {
    new JScrollPane(textArea),
    "Additional text here",
};
JOptionPane.showMessageDialog(Math_Collection_Gui.this, message, "Ergebnis",  JOptionPane.INFORMATION_MESSAGE);

顺便说一句,我只是忘了删除行“int prime_numbers[];”,它没有用处。顺便说一句,你可以用你的问题来删除没有用处的代码。谢谢,它是这样工作的!但是你知道有没有办法把这个滚动窗格和更多的文本结合起来?这样我就有了滚动窗格,然后在它下面有1-2行“普通文本”?@HyperPro更新了答案。通过传递包含多个消息部分的对象数组,可以传递多个消息部分。