/**
* @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)
答案 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;
showMessageDialog(Component parentComponent, Object message)
此方法收到parentComponent
(它不应为null,而是将引用传递给JFrame
,否则您将不会阻止父组件,所以它不会是一个模态对话框)和消息,在你的情况下,它将是包含姓名,姓氏等的String
,你可以这样使用它:
JOptionPane.showMessageDialog(frame, message);
showMessageDialog(Component parentComponent, Object message, String title, int messageType)
此方法允许您修改图标(或消息类型(可以找到完整消息类型的列表on the docs)和对话框的标题,您可以用它作为:
JOptionPane.showMessageDialog(frame, message, "My title", JOptionPane.QUESTION_MESSAGE);
showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
这允许您使用自定义图标,您可以这样使用它:
JOptionPane.showMessageDialog(frame, message, "My title2", JOptionPane.ERROR_MESSAGE, icon);
有关详细信息,请查看How to use Dialogs
现在,如果您想改进格式,可以使用html
标记:
String message = "<html>" + name + "<br/>" + lastname + "<br/>" + grade + "</html>";
或者创建自己的自定义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开头你没有把你的程序放在EDT上,以后可能会引起你的问题,所以要小心,上面的代码已经解决了这个问题