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

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

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

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

Q&A

解決済

1回答

3664閲覧

javaでテキストファイルの読み書き、保存を行うウィンドウアプリケーション

han-

総合スコア13

Java

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

0グッド

0クリップ

投稿2017/09/10 15:07

編集2017/09/10 15:55

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
javaでSwingを利用してテキストファイルの読み込み、保存、新規作成ができるウィンドウアプリケーションを作っています。
ファイル名はテキストフィールド、ファイルの読み込み、保存、新規作成はボタンで行います。その各々の処理(エラーも含む)に対するコメントをラベルに表示させます。

まだjavaを勉強してる途中で構造の理解があまりできていないので、エラーの意味がよく分からず困っています。

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

C:\work\exercise>javac Enshu5.java Enshu5.java:12: エラー: addに適切なメソッドが見つかりません(MyPanel) cont.add(panel); ^ メソッド Component.add(PopupMenu)は使用できません (引数の不一致: MyPanelをPopupMenuに変換できません:) メソッド Container.add(Component)は使用できません (引数の不一致: MyPanelをComponentに変換できません:) Enshu5.java:57: エラー: シンボルを見つけられません setLayout(new BorderLayout()); ^ シンボル: メソッド setLayout(BorderLayout) 場所: クラス MyPanel Enshu5.java:58: エラー: シンボルを見つけられません add(panelNorth, BorderLayout.NORTH); ^ シンボル: メソッド add(JPanel,String) 場所: クラス MyPanel Enshu5.java:59: エラー: シンボルを見つけられません add(panelCenter, BorderLayout.CENTER); ^ シンボル: メソッド add(JPanel,String) 場所: クラス MyPanel Enshu5.java:60: エラー: シンボルを見つけられません add(panelSouth, BorderLayout.SOUTH); ^ シンボル: メソッド add(JPanel,String) 場所: クラス MyPanel Enshu5.java:62: エラー: シンボルを見つけられません open.addActionLister(el); ^ シンボル: メソッド addActionLister(MyPanel.EventListener) 場所: タイプJButtonの変数 open Enshu5.java:63: エラー: シンボルを見つけられません save.addActionLister(el); ^ シンボル: メソッド addActionLister(MyPanel.EventListener) 場所: タイプJButtonの変数 save Enshu5.java:64: エラー: シンボルを見つけられません create.addActionLister(el); ^ シンボル: メソッド addActionLister(MyPanel.EventListener) 場所: タイプJButtonの変数 create Enshu5.java:74: エラー: シンボルを見つけられません scroll.read(br,null); ^ シンボル: メソッド read(BufferedReader,<null>) 場所: タイプJScrollPaneの変数 scroll Enshu5.java:91: エラー: シンボルを見つけられません bw.write(scroll.getText()); ^ シンボル: メソッド getText() 場所: タイプJScrollPaneの変数 scroll 注意:一部のメッセージは簡略化されています。-Xdiags:verboseで再コンパイルして完全な出力を取得してください 注意:一部のメッセージは簡略化されています。-Xdiags:verboseで再コンパイルして完全な出力を取得してく 注意:一部のメッセージは簡略化されています。-Xdiags:verboseで再コンパイルして完全な出力を取得してく エラー10個

###該当のソースコード

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; class Enshu15{ public static void main(String[] args){ JFrame frame = new JFrame("textediter"); MyPanel panel = new MyPanel(); Container cont = frame.getContentPane(); cont.add(panel); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class MyPanel{ JTextField input; JButton open,save,create; JLabel label = new JLabel("please input file"); JTextArea ta = new JTextArea(); JScrollPane scroll = new JScrollPane(ta); MyPanel(){ EventListener el = new EventListener(); input = new JTextField("None"); open = new JButton("ファイルを開く"); save = new JButton("保存"); create = new JButton("新規作成"); // panel[] とはしない JPanel panelInput = new JPanel(); JPanel panelButton = new JPanel(); JPanel panelNorth = new JPanel(); JPanel panelCenter = new JPanel(); JPanel panelSouth = new JPanel(); panelInput.setLayout(new FlowLayout()); panelInput.add(input); panelButton.setLayout(new FlowLayout()); panelButton.add(open); panelButton.add(save); panelButton.add(create); panelNorth.setLayout(new FlowLayout()); panelNorth.add(panelInput); panelNorth.add(panelButton); panelCenter.add(scroll); panelSouth.add(label); this.setLayout(new BorderLayout()); this.add(panelNorth, BorderLayout.NORTH); this.add(panelCenter, BorderLayout.CENTER); this.add(panelSouth, BorderLayout.SOUTH); open.addActionLister(el); save.addActionLister(el); create.addActionLister(el); } class EventListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if(e.getSource()==open){ String data = ""; try{ String failName = input.getText(); BufferedReader br = new BufferedReader(new FileReader(failName+".txt")); scroll.read(br,null); /* Str temp = ""; while((temp = br.readLine()) !=null){ data = temp + ":" }*/ br.close(); }catch(Exception ex){ label.setText("open error"); } } else if(e.getSource()==save){ // String data = ""; try{ String failName = input.getText(); BufferedWriter bw = new BufferedWriter(new FileWriter(failName+".txt")); bw.write(scroll.getText()); /* Str temp = ""; while((temp = br.readLine()) !=null){ data = temp + ":" }*/ bw.flush(); bw.close(); }catch(Exception ex){ label.setText("save error"); } } else{ try{ String failName = input.getText(); }catch(Exception ex){ label.setText("create error"); } } } } }

###試したこと
パネル、ボタン、ラベル、テキストファイルの読み込み書き込みの各々の手順は学んだのですが、それらをすべて組み合わせる手順が分かりません。

###補足情報(言語/FW/ツール等のバージョンなど)
windowsで言語はjavaです。VSCodeで書いています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

MyPanelがJPanelを継承していないからです。

Java

1class MyPanel extends JPanel { 2 ... 3}

せっかくなのでエラーを抜粋してざっくり説明します。

Enshu5.java:12: エラー: addに適切なメソッドが見つかりません(MyPanel) cont.add(panel); ^

contには、MyPanelを引数にするaddなんてメソッドはないよ、と言っています。

シンボル: メソッド add(JPanel,String) 場所: クラス MyPanel Enshu5.java:59: エラー: シンボルを見つけられません add(panelCenter, BorderLayout.CENTER);

MyPanelには、この引数のaddなんてメソッドはないよ、と言っています。

投稿2017/09/10 15:12

編集2017/09/10 15:15
LouiS0616

総合スコア35660

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

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

han-

2017/09/10 15:48

無事に完成しました! 分かり易く説明していただき、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問