Last active
March 16, 2019 03:23
-
-
Save astrophysik928/8a17a9add8bb89bd3ff796a580131a9b to your computer and use it in GitHub Desktop.
JavaFXで簡単なメモ帳
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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