Skip to content

Instantly share code, notes, and snippets.

@astrophysik928
Last active March 16, 2019 03:23
Show Gist options
  • Save astrophysik928/8a17a9add8bb89bd3ff796a580131a9b to your computer and use it in GitHub Desktop.
Save astrophysik928/8a17a9add8bb89bd3ff796a580131a9b to your computer and use it in GitHub Desktop.
JavaFXで簡単なメモ帳
package NotePad;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class NotePad extends Application {
//テキスト部分
TextArea ta = new TextArea();
//メニューバー
MenuBar menuBar = new MenuBar();
//アラート部
Alert alert = new Alert(AlertType.INFORMATION, "", ButtonType.YES, ButtonType.NO);
//ファイル保存ダイアログ
FileChooser fc = new FileChooser();
//折り返しメニュー
MenuItem mWrap = new MenuItem("折り返し");
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
launch();
}
@Override
public void start(Stage primaryStage) throws Exception {
// TODO 自動生成されたメソッド・スタブ
//枠のサイズ設定
primaryStage.setWidth(500);
primaryStage.setHeight(300);
primaryStage.setTitle("Simple Notebook");
//ボーダーレイアウト設定
BorderPane root = new BorderPane();
//コンテナ部の設定
root.setCenter(ta);
//メニュー部生成
menuCreate();
root.setTop(menuBar);
//テキスト部追加
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public void menuCreate() {
//メニューのインスタンス「ファイル」生成
Menu fileMenu = new Menu("ファイル");
//各メニュー部分の生成(「ファイル」)
MenuItem mNew = new MenuItem("新規");
MenuItem mOpen = new MenuItem("開く");
MenuItem mSave = new MenuItem("保存");
MenuItem mExit = new MenuItem("終了");
//メニューバー(「ファイル」)に各項目の追加
fileMenu.getItems().add(mNew);
fileMenu.getItems().add(mOpen);
fileMenu.getItems().add(mSave);
fileMenu.getItems().add(mExit);
//各メニュー項目にアクション追加(「ファイル」)
mExit.setOnAction(Event -> exitHandle());
mNew.setOnAction(Event -> newHandle());
mSave.setOnAction(Event -> saveHandle());
mOpen.setOnAction(Event -> openHandle());
//メニューインスタンス「編集」を生成
Menu fileMenu2 = new Menu("編集");
//メニューバー(「編集」)に項目「折り返し」の追加
fileMenu2.getItems().add(mWrap);
//「折り返し」にアクション追加
mWrap.setOnAction(Event -> wrapHandle());
//メニューバーに「ファイル」「編集」
menuBar.getMenus().add(fileMenu);
menuBar.getMenus().add(fileMenu2);
}
//メモアプリケーションを終了させる
public void exitHandle() {
alert.setTitle("確認");
alert.getDialogPane().setHeaderText("選んでください");
alert.getDialogPane().setContentText("今の情報を削除して終了しますか?");
//はいを押したときの処理
if (alert.showAndWait().get() == ButtonType.YES) {
//「0」でアプリケーションの終了
System.exit(0);
}
}
//新規ファイル作成
public void newHandle() {
alert.setTitle("確認");
alert.getDialogPane().setContentText("今の情報を削除して、新しいファイルを開きますか?");
//はいを押したときの処理(テキスト部を真っ白にする)
if (alert.showAndWait().get() == ButtonType.YES) {
ta.clear();
}
}
//既存のテキストファイルを開く
public void openHandle() {
//ファイルを開くダイアログ
File foD = fc.showOpenDialog(null);
if (foD != null) {
try {
//開くファイルの読み込み
FileReader fr = new FileReader(foD);
BufferedReader br = new BufferedReader(fr);
String lineStr = "";
while ((lineStr = br.readLine()) != null) {
ta.appendText(lineStr + "\n");
}
br.close();
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
//ファイルの保存
public void saveHandle() {
//保存するダイアログ
fc.getExtensionFilters().add( new FileChooser.ExtensionFilter( "テキストファイル", "*.txt" ) );
File fsD = fc.showSaveDialog(null);
if (fsD != null) {
try {
//保存するファイルに書き込み
FileWriter fr = new FileWriter(fsD);
BufferedWriter bw = new BufferedWriter(fr);
String allStr = ta.getText();
String[] outText = allStr.split("\r\n");
for (String line : outText) {
bw.write(line);
}
bw.close();
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
//テキストの折り返し
public void wrapHandle() {
if (mWrap.getText().equals("折り返し")) {
mWrap.setText("折り返し");
ta.setWrapText(true);
} else {
mWrap.setText("折り返し");
ta.setWrapText(false);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment