如何使它成为JOptionPane.showMessageDialog可以感知多个字符串?

时间:2016-11-14 13:42:39

标签: java swing

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    String grade = JOptionPane.showInputDialog(null, "Please Specify Your Grade");
    String First_name = JOptionPane.showInputDialog(null, "What is your First Name?");
    String Last_name = JOptionPane.showInputDialog(null, "What is your Last Name?");
    ]JOptionPane.showMessageDialog (null,"You are a " + grade, "Your Name is " + First_name, "Your Last Name is " + Last_name);
}

我如何得到它所说的部分"你的姓氏是" + Last_Name打印正确的字符串?在我的代码中,它表示该字符串不能转换为整数,但该行的其余部分工作正常(使用Netbeans IDE)

3 个答案:

答案 0 :(得分:2)

您正尝试将多个消息作为单独的参数传递给方法JOptionPane.showMessageDialog,但该方法仅接受单个消息参数。但是,此参数不仅限于String s;您实际上可以传递任何Object作为消息。有关JOptionPane如何处理各种类型的消息参数的详细信息,请参阅JOptionPane javadocs

我认为可以使用几种方法。一种方法是创建一个String,将所有结果连接在一起。我的建议是使用换行符(\n)来连接结果,因此它们每行出现一个。这是一个例子:

String message = "You are a " + grade + "\n"
    + "Your Name is " + First_name + "\n"
    + "Your Last Name is " + Last_name;
JOptionPane.showMessageDialog (null, message);

另一种方法是从结果中创建一个数组,并将该数组作为消息参数传递:

String[] message = {
    "You are a " + grade,
    "Your Name is " + First_name,
    "Your Last Name is " + Last_name
};
JOptionPane.showMessageDialog (null, message);

答案 1 :(得分:1)

也适用于构造函数:

JOptionPane.showMessageDialog(null, "You are a " + grade+ "\nYour Name is " + First_name+
                "\nYour Last Name is " + Last_name);
在你的最后一行代码中

并可能删除]

答案 2 :(得分:1)

JOptionPane有3个showMessageDialog()方法,每个方法都有不同的参数,让我们看看每个方法,但首先我们将使用以下String

String message = "You are a " + grade + " Your Name is " + First_name " Your Last Name is " + Last_name;

有关详细信息,请查看How to use Dialogs

现在,如果您想改进格式,可以使用html标记:

String message = "<html>" + name + "<br/>" + lastname + "<br/>" + grade + "</html>";

enter image description here

或者创建自己的自定义JPanel,然后将组件添加到其中,然后将JPanel添加到showMessageDialog参数的Object message,但我要离开了那部分给你

此代码将创建上述输出图像,但是您需要将图像路径更改为您自己的路径,自定义图标取自here

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

public class DialogExamples {

    private JFrame frame;
    private ImageIcon icon = new ImageIcon("/home/jesus/Pictures/L5DGx.png");

    public static void main (String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new DialogExamples().createAndShowGui();
            }
        });
    }
    public DialogExamples() {
        System.out.println(icon);
    }

    public void createAndShowGui() {

        frame = new JFrame("Example");

        String name = "Your name is Frakcool";
        String grade = "Your grade is 5";
        String lastname = "Your lastname is YajiSuzu";

        String message = "<html>" + name + "<br/>" + lastname + "<br/>" + grade + "</html>";
//      String message = name + " " + lastname + " " + grade;
        JOptionPane.showMessageDialog(frame, message);
        JOptionPane.showMessageDialog(frame, message, "My title", JOptionPane.QUESTION_MESSAGE);
        JOptionPane.showMessageDialog(frame, message, "My title2", JOptionPane.ERROR_MESSAGE, icon);

        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

在你的情况下,你得到例外:

String cannot be converted to an int

因为你在这里发送了4个参数:

JOptionPane.showMessageDialog (null,"You are a " + grade, "Your Name is " + First_name, "Your Last Name is " + Last_name);

在这种情况下,你正在使用我在上面展示的第二种方法,因此期望在第四个参数上接收int messageType,而不是字符串。

这不是JS中的console.log(),在这里你使用+运算符连接字符串,而不是,(逗号)。

注意:

另外,您的变量和方法名称应以lowerCamelCase开头,而您的类应以Java naming conventions

中所述的UpperDromedaryCase开头

注2:

你没有把你的程序放在EDT上,以后可能会引起你的问题,所以要小心,上面的代码已经解决了这个问题