首先,Scanner 的东西没有问题,当我们使用 GUI 时也不需要它。
它仅对控制台输入/输出有用。
所以当你得到文本时,它将是字符串格式,所以将其解析为双倍
String val = txt1.getText();
double valueDouble = Double.parseDouble(val);
并使用 try/catch 处理解析异常
所以替换下面这段代码
Scanner dado1 = new Scanner(txt1.getText());
System.out.println(dado1);
if(dado1.hasNextDouble()){
tamanho = dado1.nextDouble();
}
Scanner dado2 = new Scanner(txt2.getText());
if(dado2.hasNextDouble()){
peso = dado2.nextDouble();
}
到
String t1 = txt1.getText();
if(!"".equals(t1))
tamanho = Double.parseDouble(t1);
String t2 = txt2.getText();
if(!"".equals(t2))
peso = Double.parseDouble(t2);
我试图运行你的程序,但我得到了异常提示 -> 容器没有父属性。
所以我所做的是我在你的确定按钮动作监听器中添加了一个父容器
而且效果很好。
要添加的容器是
final JDesktopPane desk = new JDesktopPane();
setContentPane(desk);
给你的
JOptionPane.showInternalMessageDialog(desk,"Seu IMC é:"+ (result/ peso));
但您已将 null 作为第一个参数传递。
所以它应该像下面这样
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
String t1 = txt1.getText();
if(!"".equals(t1))
tamanho = Double.parseDouble(t1);
String t2 = txt2.getText();
if(!"".equals(t2))
peso = Double.parseDouble(t2);
result = tamanho*tamanho;
if (ok != null){
System.out.println(result);
System.out.println(peso);
final JDesktopPane desk = new JDesktopPane();
setContentPane(desk);
JOptionPane.showInternalMessageDialog(desk,"Seu IMC é:"+ (result/ peso));
}
}
});