Java程序界面设计

该博客展示了如何使用JavaFX构建一个简单的图形用户界面,用于输入年收入和选择家庭状况,然后计算并显示应缴纳的税款。程序中包含了Tax类,用于根据不同的家庭状况和收入范围计算税款。
摘要由CSDN通过智能技术生成

JavaFX实现图形用户界面,计算应交的税款。


代码详情:

Mytax.java

 

import javafx.application.Application;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.geometry.HPos;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.ComboBox;

import javafx.scene.control.Label;

import javafx.scene.control.TextField;

import javafx.scene.layout.GridPane;

import javafx.stage.Stage;

 

    /**

     * 计算贷款

     * @author

     *

     */

publicclass Mytax   extends Application{

       /**年收入文本框*/

       private TextField tfAnnualincome=new TextField();

       /**家庭状况*/

       private TextField tfstatus=new TextField();

       /**计算税按钮*/

       private Button btCal=new Button("计算税");

       /**应缴税款文本框*/

       private Label tftax=new Label();

       /**组合框*/

       private ComboBox<String> cbStatus=new ComboBox<>();

 

       @Override

       publicvoid start(Stage primaryStage) throws Exception {

          

           GridPane gridPane=new GridPane();//创建网格面板

           gridPane.setHgap(10);//设置横向间隙

           gridPane.setVgap(4);//设置纵向间隙

          

           //依次添加标签和文本框

           gridPane.add(new Label("年收入:"), 0, 0);

           gridPane.add(tfAnnualincome,1,0);

           gridPane.add(new Label("家庭情况:"), 0, 1);

           gridPane.add(cbStatus, 1, 1);

           gridPane.add(btCal, 1, 2);

           gridPane.add(new Label("应缴税款:"),0, 3);

           gridPane.add(tftax, 1, 3);

          

           //设置居中对齐,靠右对齐

           gridPane.setAlignment(Pos.CENTER);

          

           this.tfAnnualincome.setAlignment(Pos.BOTTOM_LEFT);

           String[] status={ "单身","已婚联合付税","已婚单独付税","户主"};

           ObservableList<String> items=FXCollections.observableArrayList(status);

           cbStatus.getItems().addAll(items);

           cbStatus.setStyle("-fx-color:blue");

           cbStatus.setValue("单身");

           this.btCal.setOnAction(e ->calculateTax(items.indexOf(cbStatus.getValue())) );

           this.tftax.setAlignment(Pos.CENTER);

           //设置按钮的水平位置

           GridPane.setHalignment(btCal, HPos.LEFT); 

           //显示出面板

           Scene scene=new Scene(gridPane,500,300);

           primaryStage.setTitle("计算税");

           primaryStage.setScene(scene);

           primaryStage.show();

          

       }

      

       /**

        * 计算贷款数据

        */

       privatevoid calculateTax(intindex){

 

              //从文本框中获得利率

              doubleincome =

              Double.parseDouble(this.tfAnnualincome.getText());

             

             

              //创建Tax对象

              Tax tax = new Tax(index,income);

              doublet=tax.computeTax();

              tftax.setText(String.format("$%.2f", t));

             

           }

   

      

       publicstaticvoid main(String[] args){

           launch();

       }

 

    }

 

Tax.java

publicclass Tax {

   

    privateintstatus ;//家庭状态

    privatedoubleincome;//收入

    privatedoubletax;//应缴的税款

    //用数组rates保存每个档次对应的税率

    privatedouble[] rates = {0.10, 0.15, 0.25, 0.28, 0.33, 0.35};

    //用二维数组保存税率表,左下标记录家庭状况,右下标记录收入档次

    privateint[][] brackets = {

             {8350, 33950,82250, 171550, 372950}, // Single filer

             {16700, 67900,137050, 208850, 372950}, // Marriedjointly

             {8350, 33950,68525, 104425, 186475}, // Marriedseparately

             {11950, 45500,117450, 190200, 372950} // Head ofhousehold

      };

   

   

   

    publicstaticfinalintSINGLE_FILER=0;

    publicstaticfinalintMARRIED_JOINTLY=1;

    publicstaticfinalintQUALIFIED_WIDOER=1;

    publicstaticfinalintMARRIED_SEPARATELY=2;

    publicstaticfinalintHEAD_OF_HOUSEHOLD=3;

   

   

   

    /**

     * 无参构造方法

     */

    public Tax() {   

       this(0,0);

    }

   

    /**

     * 用家庭状态和收入构建一个tax对象

     * @param status 家庭状态

     * @param income 收入

     */

    public Tax(intstatus, doubleincome) {

      

       this.status = status;</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值