第4次作业类测试代码+119+陈云鹏

类图:

代码部分:

 

  1 package sample;
  2 
  3 import javafx.application.Application;
  4 import javafx.event.EventHandler;
  5 import javafx.fxml.FXMLLoader;
  6 import javafx.scene.Parent;
  7 import javafx.scene.Scene;
  8 import javafx.scene.control.Alert;
  9 import javafx.scene.control.Button;
 10 import javafx.scene.control.TextField;
 11 import javafx.scene.input.MouseEvent;
 12 import javafx.stage.Stage;
 13 
 14 import java.text.ParseException;
 15 import java.text.SimpleDateFormat;
 16 import java.util.Calendar;
 17 
 18 
 19 public class Main extends Application {
 20 
 21      static boolean next=false;
 22     @Override
 23     public void start(Stage primaryStage) throws Exception {
 24         Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
 25         primaryStage.setTitle("计算日期--陈云鹏");
 26         primaryStage.setScene(new Scene(root, 400, 350));
 27         TextField mTextFiled_Year = (TextField) root.lookup("#textField_Year");
 28         TextField mTextFiled_Month = (TextField) root.lookup("#textField_Month");
 29         TextField mTextFiled_Day = (TextField) root.lookup("#textField_Day");
 30         TextField mTextFiled_Week = (TextField) root.lookup("#textField_Week");
 31         TextField mTextFiled_Previous = (TextField) root.lookup("#textField_Previous");
 32         TextField mTextFiled_Next = (TextField) root.lookup("#textField_Next");
 33         Button mButton_OK = (Button) root.lookup("#button_OK");
 34         mButton_OK.setOnMouseClicked(new EventHandler<MouseEvent>() {
 35             @Override
 36             public void handle(MouseEvent event) {
 37                 try {
 38                     int year = Integer.parseInt(mTextFiled_Year.getText());
 39                     int month = Integer.parseInt(mTextFiled_Month.getText());
 40                     int day = Integer.parseInt(mTextFiled_Day.getText());
 41                     String result = nextdate(month, day, year);
 42                     if (result.equals("月份超出范围") || result.equals("日期超出范围") || result.equals("年份超出范围") || result.equals("日期不存在")) {
 43                         mTextFiled_Week.setText("---");
 44                         mTextFiled_Previous.setText("----/--/--");
 45                         mTextFiled_Next.setText("----/--/--");
 46                     } else {
 47                         next = false;
 48                         mTextFiled_Previous.setText(nextdate(month, day, year));//前一天
 49                         next = true;
 50                         mTextFiled_Next.setText(nextdate(month, day, year));//后一天
 51                         mTextFiled_Week.setText(getWeek(month, day, year));
 52                     }
 53                 }
 54                 catch (Exception e){
 55                     Alert alert = new Alert(Alert.AlertType.INFORMATION);
 56                     alert.setHeaderText("请输入数字");
 57                     alert.show();
 58                 }
 59             }
 60         });
 61         primaryStage.show();
 62     }
 63 
 64     public static String nextdate(int month, int day, int year) {
 65         if (month < 1 || month > 12)
 66             return "月份超出范围";
 67         if (day < 1 || day > 31)
 68             return "日期超出范围";
 69         if (year < 1912 || year > 2050)
 70             return "年份超出范围";
 71         SimpleDateFormat sFormat = new SimpleDateFormat("yyyyMMdd");
 72         sFormat.setLenient(false);
 73         try {
 74             Calendar c = Calendar.getInstance();
 75             c.setTime(sFormat.parse("" + year + String.format("%02d", month) + String.format("%02d", day)));
 76             if(next)
 77             c.add(Calendar.DATE, 1);
 78             else   c.add(Calendar.DATE, -1);
 79             return c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月" + c.get(Calendar.DATE) + "日";
 80         } catch (ParseException e) {
 81             return "日期不存在";
 82         }
 83     }
 84 
 85     public static String getWeek(int month, int day, int year) {
 86         String result[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
 87         SimpleDateFormat sFormat = new SimpleDateFormat("yyyyMMdd");
 88         sFormat.setLenient(false);
 89         Calendar c = Calendar.getInstance();
 90         try {
 91             c.setTime(sFormat.parse("" + year + String.format("%02d", month) + String.format("%02d", day)));
 92         } catch (ParseException e) {
 93             e.printStackTrace();
 94             return "--";
 95         }
 96         int w = c.get(Calendar.DAY_OF_WEEK) - 1;
 97         if (w < 0)
 98             w = 0;
 99         return result[w];
100     }
101 
102     public static void main(String[] args) {
103         launch(args);
104     }
105 }

 

界面控制:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <?import javafx.scene.text.*?>
 4 <?import javafx.scene.control.*?>
 5 <?import java.lang.*?>
 6 <?import javafx.scene.layout.*?>
 7 <?import javafx.geometry.Insets?>
 8 <?import javafx.scene.layout.GridPane?>
 9 <?import javafx.scene.control.Button?>
10 <?import javafx.scene.control.Label?>
11 
12 <GridPane alignment="center" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
13    <columnConstraints>
14       <ColumnConstraints />
15    </columnConstraints>
16    <rowConstraints>
17       <RowConstraints />
18    </rowConstraints>
19    <children>
20       <Pane prefHeight="375.0" prefWidth="426.0">
21          <children>
22             <TextField id="textField_Year" layoutX="43.0" layoutY="130.0" prefHeight="23.0" prefWidth="71.0" />
23             <TextField id="textField_Month" layoutX="179.0" layoutY="130.0" prefHeight="23.0" prefWidth="71.0" />
24             <TextField id="textField_Day" layoutX="312.0" layoutY="130.0" prefHeight="23.0" prefWidth="71.0" />
25             <Text layoutX="33.0" layoutY="111.0" strokeType="OUTSIDE" strokeWidth="0.0" text="请输入要计算的年月日" />
26             <Text layoutX="14.0" layoutY="146.0" strokeType="OUTSIDE" strokeWidth="0.0" text="年:" />
27             <Text layoutX="148.0" layoutY="146.0" strokeType="OUTSIDE" strokeWidth="0.0" text="月:" />
28             <Text layoutX="282.0" layoutY="145.0" strokeType="OUTSIDE" strokeWidth="0.0" text="日:" />
29             <Text layoutX="117.0" layoutY="272.0" strokeType="OUTSIDE" strokeWidth="0.0" text="上一天是:" />
30             <Text layoutX="117.0" layoutY="303.0" strokeType="OUTSIDE" strokeWidth="0.0" text="下一天是:" />
31             <Text layoutX="105.0" layoutY="240.0" strokeType="OUTSIDE" strokeWidth="0.0" text="这天星期是:" />
32             <TextField id="textField_Week" editable="false" layoutX="185.0" layoutY="224.0" prefHeight="23.0" prefWidth="120.0" />
33             <TextField id="textField_Previous" editable="false" layoutX="185.0" layoutY="256.0" prefHeight="23.0" prefWidth="120.0" />
34             <TextField id="textField_Next" editable="false" layoutX="185.0" layoutY="287.0" prefHeight="23.0" prefWidth="120.0" />
35             <Button id="button_OK" layoutX="143.0" layoutY="176.0" mnemonicParsing="false" text="OK" />
36             <Button layoutX="225.0" layoutY="176.0" mnemonicParsing="false" text="Cancel" />
37          </children>
38       </Pane>
39    </children>
40 </GridPane>

 界面:

这天星期,上一天,下一天不可编辑

输入非法

正确输入

posted @ 2017-05-03 16:26  景诺晨曦  阅读(215)  评论(0)    收藏  举报