分享
三行代码  ›  专栏  ›  技术社区  ›  HyperPro

如何在joptionpane中多行打印数组 - How to print an array in a JOptionPane in multiple lines

  •  0
  • HyperPro  · 技术社区  · 1 周前

    一开始,我不是以英语为母语的人,所以请原谅我的错误^^

    我正在编写一个程序,它将所有素数都转换成一个特定的整数,并希望在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之前所有素数的数组,然后我将这个数组保存在一个字符串中。

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

    1 回复  |  直到 1 周前
        1
  •  0
  •   VGR    1 周前

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

    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行中。