質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JFrame

JFrameはJFC/Swingフレームワークのコンポーネントであり、トップレベルのコンテナです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

button

HTMLで用いる<button>タグです。

Q&A

解決済

1回答

1173閲覧

JavaのGUIからのファイル書き込み

Crono_891

総合スコア1

JFrame

JFrameはJFC/Swingフレームワークのコンポーネントであり、トップレベルのコンテナです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

button

HTMLで用いる<button>タグです。

0グッド

0クリップ

投稿2021/07/16 19:27

JavaでGUI上で名前と生年月日を入力するとGUIとファイルにそれぞれ情報が書き加えられるシステム

JavaでGUI上で名前と生年月日を入力して、EnterかAddボタンを押すと
GUIの下のフィールドにその情報が追加され
このプログラム上で作成したコマンドライン引数名のファイルに
一行ずつその情報が書かれて行くプログラムを作っています
FileWriteは一回機能するとその名前のファイルがなければ作り、ある場合は初期化して書き換えてしまう?ことから
Panelのプログラムをtry~catchの中に実装しているのですが
try文が不正な開始と出てしまいます

発生している問題・エラーメッセージ

GUIWrite.java:22: エラー: 型の開始が不正です
try (FileInputStream fis = new FileInputStream(Fname);
^
GUIWrite.java:22: エラー: ')'がありません
try (FileInputStream fis = new FileInputStream(Fname);
^
GUIWrite.java:22: エラー: 型の開始が不正です
try (FileInputStream fis = new FileInputStream(Fname);
^
GUIWrite.java:22: エラー: <identifier>がありません
try (FileInputStream fis = new FileInputStream(Fname);
^
GUIWrite.java:23: エラー: ';'がありません
ObjectInputStream ois = new ObjectInputStream(fis)){
^
GUIWrite.java:25: エラー: 式の開始が不正です
while(){
^
GUIWrite.java:28: エラー: ';'がありません
panelA(){//PanelAブロック開始
^
GUIWrite.java:89: エラー: 型の開始が不正です
} catch (FileNotFoundException e) {

該当のソースコード

Java
import java.awt.;
import javax.swing.
;
import java.awt.event.*;

class panelA extends JPanel{
public String Fname;
public panelA(String Names){
setPreferredSize(new Dimension(600, 600));
Fname = Names;
}

JTextField Fields; JTextArea Area; JPanel panelB; JButton buttonA,buttonB; JLabel labelA; try (FileInputStream fis = new FileInputStream(Fname); ObjectInputStream ois = new ObjectInputStream(fis)){ try { while(){ panelA(){//PanelAブロック開始 setLayout(new BorderLayout()); panelB = new JPanel(); labelA = new JLabel("名前と生年月日"); labelA.setPreferredSize(new Dimension(400,30)); panelB.add(labelA); Fields = new JTextField(); Fields.setPreferredSize(new Dimension(400,30)); Area = new JTextArea(); Area.setEditable(false); Area.setPreferredSize(new Dimension(400,300)); panelB.setLayout(new FlowLayout()); buttonA = new JButton("Add"); buttonB = new JButton("Clear"); Fields.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Area.append(Fields.getText()+"\n"); ois.writeString(Fields.getText()); Fields.setText(""); } }); buttonA.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Area.append(Fields.getText()+"\n"); ois.writeString(Fields.getText()); Fields.setText(""); } }); buttonB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Fields.setText(""); } }); panelB.add(buttonA); panelB.add(buttonB); add(labelA,BorderLayout.NORTH); add(Area,BorderLayout.SOUTH); add(Fields,BorderLayout.CENTER); add(panelB,BorderLayout.EAST); }//PanelAEnd }//WhileEnd } catch (EOFException e) {} } catch (FileNotFoundException e) { e.printStackTrace(); }

}

public class GUIWrite{
public static void main(String[] args) {
JFrame frame = new JFrame("名簿記入");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,350);
frame.add(new panelA());
//frame.add(new panelA(args[0]));
frame.pack();
frame.setVisible(true);
}
}

### 試したこと try文の開始の位置を変える、入力した文字を仮のString引数に代入してそれをFileWriteの書きこむ分に指定する などは試しましたが、それではファイルへの書き込みが上手く行かないのではないかと思います ### 補足情報(FW/ツールのバージョンなど) 一応 TeraPadで書いています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/07/16 21:30

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 > 一応 TeraPadで書いています IDE(もしくは構文チェック機能があるもの)使えば実行前に分かります。
m.ts10806

2021/07/16 21:31

マークダウンしないとインデントが現在のコードと同じにならないので非常に読みづらい中なので同か分かりませんが、try-catchを同じ関数内で、この使い方で入れ子にするのはどういう意図がありますか?
Crono_891

2021/07/17 15:43

ご教示いただきありがとうございます try文の認識が少しずれていたということが分かりましたので、改めてまた練らせていただきたいと思います というか確かに冷静に考えたら意図が自分でもが分かりませんね...
m.ts10806

2021/07/17 22:13

質問は編集できます
guest

回答1

0

ベストアンサー

そもそものtry文の書き方が間違っています
「java try」でぐぐって、でてきた解説を読んでみよう

投稿2021/07/16 22:32

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問