/**
*javafx用jdk8版本
*/import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import java.awt.FileDialog;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JOptionPane;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.paint.Color;
import javafx.scene.input.*;
public class Java extends Application
{private TextField tf=new TextField();private FileDialog fd1,fd2;private PasswordField pf=new PasswordField();private TextArea ta=new TextArea("可以编写你的日记了");private String path = null;// 装打开的文件的路径boolean save = false; // 没有保存int startIndex = 0; ///字符串开始的位置@Overridepublic void start(Stage stage){MenuBar menuB=new MenuBar();BorderPane rootBP=new BorderPane();rootBP.setTop(menuB);rootBP.setCenter(ta);Menu fileM=new Menu("文件");fileM.setMnemonicParsing(true);MenuItem newMI=new MenuItem("新建");MenuItem openMI=new MenuItem("打开");openMI.setAccelerator(KeyCombination.keyCombination("Ctrl+o"));MenuItem saveMI=new MenuItem("保存");MenuItem exitMI=new MenuItem("退出");exitMI.setAccelerator(KeyCombination.keyCombination("Ctrl+x"));EventHandler<ActionEvent>MEHandler=new EventHandler<ActionEvent>(){public void handle(ActionEvent ae){String name=((MenuItem) ae.getTarget()).getText();if(name.equals("退出"))Platform.exit();if(name.equals("打开")){openMethod();}if(name.equals("新建")){newMethod();}if(name.equals("保存")){saveMethod();}}};exitMI.setOnAction(MEHandler);newMI.setOnAction(MEHandler);openMI.setOnAction(MEHandler);saveMI.setOnAction(MEHandler);fileM.getItems().addAll(newMI,openMI,saveMI,exitMI);Menu styleM=new Menu("格式");Menu fontM=new Menu("字体");CheckMenuItem boldMI=new CheckMenuItem("粗体");boldMI.setSelected(true);CheckMenuItem italicMI=new CheckMenuItem("斜体");fontM.getItems().addAll(boldMI,italicMI);Menu rgbM=new Menu("颜色");RadioMenuItem rMI=new RadioMenuItem("红色");RadioMenuItem gMI=new RadioMenuItem("绿色");RadioMenuItem bMI=new RadioMenuItem("蓝色");rMI.setOnAction(e->ta.setStyle("-fx-text-fill:red"));gMI.setOnAction(e->ta.setStyle("-fx-text-fill:green"));bMI.setOnAction(e->ta.setStyle("-fx-text-fill:blue"));boldMI.setOnAction(e->ta.setStyle("-fx-text-weight:blod"));italicMI.setOnAction(e->ta.setStyle("-fx-text-decoration:italic"));bMI.setSelected(true);ToggleGroup rgbG=new ToggleGroup();rMI.setToggleGroup(rgbG);gMI.setToggleGroup(rgbG);bMI.setToggleGroup(rgbG);rgbM.getItems().addAll(rMI,gMI,bMI);styleM.getItems().addAll(fontM,new SeparatorMenuItem(),rgbM);menuB.getMenus().addAll(fileM,styleM);GridPane rootGP=new GridPane();BorderPane bp=new BorderPane();final Label lab1=new Label("用户名:");final Label lab2=new Label("密码:");tf.setPromptText("请输入用户名");pf.setPromptText("请输入密码");Button bt=new Button("登录");bt.setPrefWidth(150);BorderPane.setAlignment(bt,Pos.CENTER);rootGP.add(lab1, 1, 1);rootGP.add(tf, 2, 1);rootGP.add(lab2, 1, 3);rootGP.add(pf, 2, 3);rootGP.setStyle("-fx-padding:20");bp.setCenter(rootGP);bp.setBottom(bt);bp.setStyle("-fx-padding:40");ta.setPrefColumnCount(15);ta.setEditable(false);bt.setOnAction(e->{if(tf.getText().equals("18704485473")&&pf.getText().equals("YX31818307996845")){ta.setEditable(true);Stage secondStage = new Stage();StackPane secondPane = new StackPane(rootBP);Scene secondScene = new Scene(secondPane, 600, 600);secondStage.setTitle("韩绍堂的日记本");secondStage.setScene(secondScene);secondStage.show();      }else{JOptionPane.showMessageDialog(null,"用户名或密码错误,请重新输入","错误",JOptionPane.INFORMATION_MESSAGE);     tf.setText("");pf.setText("");}});Scene scene=new Scene(bp,390,180);stage.setTitle("我的日记本");stage.setScene(scene);stage.show();}private void openMethod() {FileChooser fc = new FileChooser(); fc.setTitle("选择文件-打开");fc.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("TXT", "*.txt"));Window stage = null;File file = fc.showOpenDialog(stage); if (file != null && file.exists()){ try {FileInputStream in = new FileInputStream(file); byte[] bs = new byte[(int) file.length()];in.read(bs);ta.setText(new String(bs));in.close();path = file.getPath();int lastIndex = path.lastIndexOf("\\"); String title = path.substring(lastIndex + 1); /setTitle(title + "-我的记事本"); } catch (Exception e) {}}}private void setTitle(String string) {// TODO Auto-generated method stub}private void newMethod() {if (save) {  ta.setText("");setTitle("新文件-我的记事本");path = null;} else if (!save && !ta.getText().isEmpty()) {Stage newStage = new Stage();VBox vBox = new VBox();vBox.setSpacing(5);Label label1 = new Label("你还没有保存内容!!!");Label label2 = new Label("按“确定”则新建一个文本,");Label label3= new Label("按“取消”则退出该窗口。");vBox.getChildren().addAll(label1,label2,label3);Button ok = new Button("确定");Button cancel = new Button("取消");HBox hBox = new HBox();hBox.setSpacing(30);hBox.getChildren().addAll(ok,cancel);BorderPane rootNode = new BorderPane();rootNode.setTop(vBox);rootNode.setCenter(hBox);Scene scene = new Scene(rootNode,300,150);newStage.setTitle("提示");newStage.setScene(scene);newStage.show();ok.setOnAction(event->{ta.setText("");setTitle("新文件-我的记事本");path = null;newStage.close();});cancel.setOnAction(event->{newStage.close(); });}     }private void saveMethod(){if (path == null) {FileChooser fc = new FileChooser();fc.setTitle("选择文件-保存");Window stage = null;File file = fc.showSaveDialog(stage);if (file != null && !file.exists()){try{FileOutputStream out = new FileOutputStream(file);out.write(ta.getText().getBytes());out.flush();out.close();save = true; } catch (Exception e) {e.printStackTrace();}}}else {try{FileOutputStream out = new FileOutputStream(path);out.write(ta.getText().getBytes());out.flush();out.close();save = true;} catch (Exception e) {e.printStackTrace();}}}
}

java实现日记本功能相关推荐

  1. Java堆栈功能_【ThinkingInJava】35、用java实现堆栈功能

    /** * 书本:<Thinking In Java> * 功能:用java实现堆栈功能 * 文件:LinkedStack.java * 时间:2015年4月17日14:23:34 * 作 ...

  2. JDK 6中新增的Java Console类功能概览

    转载自  JDK 6中新增的Java Console类功能概览 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Windows下的cmd或者L ...

  3. java 8 新功能详解_Java 8和Java 14之间的新功能

    java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...

  4. java ee打印功能_Java EE 8的前5个新功能

    java ee打印功能 备受期待的Java Enterprise Edition 8版本具有两个令人兴奋的新API(JSON绑定1.0和Java EE Security 1.0),并且对当前API进行 ...

  5. java ee打印功能_Java EE:异步构造和功能

    java ee打印功能 介绍 Java EE具有许多API和构造以支持异步执行. 从可伸缩性和性能的角度来看,这是至关重要的. 让我们假设2个模块相互交互. 当模块A (发送方)以同步方式向模块B ( ...

  6. java 8 新功能详解_Java 8的8个新功能

    java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...

  7. Java 12新功能完整指南

    六个月飞得如此之快,是时候再次仔细研究一下即将发布的新JDK版本. 让我们满足Java 12及其向开发人员介绍的功能. 自甲骨文推出其6个月加速发布节奏以来已经有一段时间了,要跟上每个版本及其添加到表 ...

  8. java集合的功能_功能性Java集合

    java集合的功能 如今,在功能上大肆宣传,因此至少在Java集合方面,我会简要概述一下. 我个人喜欢标准 集合API,但在某些情况下可能会很尴尬并添加其他详细信息. 在Java 8+的更高版本中,这 ...

  9. 睡觉时:新增的Java 8新增功能

    自Java 8推出以来,最有趣的功能是什么? Java 8最近庆祝了它的第一个生日,而主要版本刚刚一年多前发布. 这当然值得庆祝. 自从最初的Java 8版本问世以来,已经发布了六个更新. 这些更新中 ...

最新文章

  1. Java 必须掌握的 12 种 Spring 常用注解!
  2. 关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
  3. Java - Get a list of all Classes loaded in the JVM[转]
  4. 细数开源历史上的十个重大事件
  5. 网页javascript加载不出_写给初学者的JavaScript异步编程和背后思想
  6. SEO之基础篇(一)
  7. 大道五目Flash英文版(Renju Problems)程序分析之禁手判断
  8. 爬虫requests高阶篇详细教程
  9. 一张报表节约几十万能耗,新华扬解密精益生产的精髓
  10. Rails + Bootstrap个人博客搭建的完整过程(4)
  11. 对象转JSON字符串保留空(null)值;
  12. 计算机毕业设计ssm高校选课系统uu27m系统+程序+源码+lw+远程部署
  13. vm12装xp系统步骤
  14. git push报错 无法提交远程 [rejected] main -> main (fetch first)error: failed to push some refs to
  15. 使用阿里云的图片识别成表格ocr(将图片表格转换成excel)
  16. 免费的多功能视频格式转换工具XMedia Recode
  17. 《C#零基础入门之百识百例》(二十一)数组遍历 -- 删除数组零元素
  18. pcf85263 linux驱动源码,PCF85263AT/AJ
  19. Ubuntu 13.04下安装RabbitVCS,类似Windows的TortoiseSVN
  20. TI高精度实验室ADC系列培训视频 第3章和第4章 ADC噪声分析

热门文章

  1. Fully-Convolutional Siamese Networks for Object Tracking基于全卷积孪生网络的目标跟踪算法SiameseFC
  2. 看完了这篇,还能不知道什么是hadoop,大数据吗?❤️‍万字详解告诉你
  3. UWA学堂专栏推荐:Unity项目从Gamma转Linear颜色空间的经验分享
  4. maven 使用记录
  5. java的冒泡_Java实现冒泡排序
  6. Vue—制作一个todoList
  7. 持续集成(三)- hudson插件入门
  8. Android 录音功能开发
  9. 网络安全与网站安全及计算机安全:如何使用Kali Linux进行Windows计算机操作系统安全演练
  10. 各种类型URL的SEO权重比较