用于输出结果的JOptionPane对话框

时间:2018-06-06 00:32:00

标签: java swing joptionpane

我正在完成一项学校作业,我正在尝试根据用户输入GUI的内容来计算税率。我想弄清楚如何在结尾处添加一个文本框,但到目前为止我只能做out.println

import java.swing.JOptionPane;
public class GUI {    

public static void main(String[] args) {
        String fn = javax.swing.JOptionPane.showInputDialog("Enter house value");
        int house = Integer.parseInt(fn);

        double tax = 0;

        if (house <= 8500)
            tax = house * 0.10;
        else if (house <= 34500)
            tax = house * 0.15;
        else if (house <= 83600)
            tax = house * 0.25;
        else if (house <= 174400)
            tax = house * 0.28;
        else if (house <= 379150)
            tax = house * 0.33;
        else if (house >= 379150)
            tax = house * 0.35;

        if (house <=  8500)
            System.out.println("You have entered the 10% bracket. Due: $" + tax);
        else if (house <= 34500)
            System.out.println("You have entered the 15% bracket. Due: $"+ tax);
        else if (house <= 83600)
            System.out.println("You have entered the 25% bracket. Due: $"+ tax);
        else if (house <= 174400)
            System.out.println("You have entered the 28% bracket. Due: $"+ tax);
        else if (house <= 379150)
            System.out.println("You have entered the 33% bracket. Due: $"+ tax);
        else if (house >= 379150)
            System.out.println("You have entered the 35% bracket. Due: $"+ tax);
}
}

2 个答案:

答案 0 :(得分:0)

完成所有计算后,您只需显示一个JOptionPane。

  • 在类中声明一个String,如下所示: -

    字符串结果;

  • 在您需要执行的计算之后更改字符串的值,如下所示: -

    result =“你的结果在这里”;

  • 现在,只需在GUI类中创建一个内部类,如下所示: -

    公共类结果{     public void main(String a [])     {         JOptionPane.showMessageDialog(NULL,结果);     }     }

  • 在代码中,更改String的值后,调用我们为显示结果而创建的Dialog类,如下所示: -

    结果showResult = new Result(); showResult.setVisible(真);

答案 1 :(得分:0)

首先,您的作业是否会迫使您使用JOptionPanes完成所有这些工作?纯粹从您的用例来看,拥有一个通常包含输入文本字段和输出文本字段的普通JDialog似乎更加合乎逻辑。

第二,将JOptionPane用于输出完全没有意义。该对象的名称已经说了它,JOptionPane,当用户应该在选项之间进行选择时使用它。输出窗口不提供任何选项,仅是为了向用户输出不应与之交互的信息。

请记住,将JDialog用于输出窗口会更好。如果您还没有注意到,那么如果您输入任何非整数值,或者甚至按了cancel选项,您的班级现在都会在NumberFormatException上抛出parseInt(fn)(因为您没有检查输入的内容)完全没有。)

我将使用这个很小的设计缺陷来确保我们具有可用的值,从而确定输出窗口的初始化。这段代码不是完美的或优化的,但是可以满足您的要求。

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GUI
{
    public static void main(String[] args)
    {
        String fn = javax.swing.JOptionPane.showInputDialog("Enter house value");
        int house = Integer.parseInt(fn);
        String taxBracket = "";
        
        try
        {
            double tax = 0;
            
            if(house <= 8500)
            {
                tax = house * 0.10;
                taxBracket = "10%";
            }
            else if(house <= 34500)
            {
                tax = house * 0.15;
                taxBracket = "15%";
            }
            else if(house <= 83600)
            {
                tax = house * 0.25;
                taxBracket = "25%";
            }
            else if(house <= 174400)
            {
                tax = house * 0.28;
                taxBracket = "28%";
            }
            else if(house <= 379150)
            {
                tax = house * 0.33;
                taxBracket = "33%";
            }
            else if(house >= 379150)
            {
                tax = house * 0.35;
                taxBracket = "35%";
            }
            
            JDialog dialog = new JDialog();
            dialog.setTitle("Output");
            
            JPanel outputPanel = new JPanel();
            String output = new String("You have entered the " + taxBracket + " bracket. Due: $" + tax);
            JLabel outputLabel = new JLabel(output);
            outputPanel.add(outputLabel);
            
            dialog.add(outputPanel);
            dialog.pack();
            dialog.setVisible(true);
        }
        catch(NumberFormatException e)
        {
            System.out.println("Error: The entered Input is non-numeric.");
        }
    }
}

再次,如果您的作业迫使您使用2个JOptionPanes来执行此操作,只需用JOptionPane.showMessageDialog()替换初始化JDialog的代码,然后将输出String传递给JOptionPane。