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

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

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

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

Q&A

解決済

2回答

1166閲覧

JavaSwingのエラー処理について

meipuru03

総合スコア16

Java

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

0グッド

0クリップ

投稿2017/09/12 06:41

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ
シンボルが未発見、不適合な型

エラーメッセージ

CalendarTest.java:22シンボルが見つけられません
this.getContentPane.add(loginInstans.getLoginPanel());
シンボル:変数getContentPane
Login.java:22不適合な型:LoginをActionListenerに変換できません
buttondecide.addActionListener(this);
###該当のソースコード

ここにご自身が実行したソースコードを書いてください

(CalendarTest.java)
import java.awt.;
import java.awt.event.
;
import java.io.;
import java.util.
;
import javax.swing.;
import javax.swing.border.
;
import javax.swing.text.*;

public class CalendarTest extends JFrame implements ActionListener{
Login loginInstans;
JLabel nowDate;
JButton[][] dateButton;
JTextArea[][] dateArea;
String[] subjectList = {"C言語", "Java", "解析学", "線形代数", "統計学", "計算モデル論", "数値計算の理論と実際", "専門英語", "ドイツ語", "コンピュータ序論", "ハードウェア基礎", "ソフトウェア設計学", "ファイルとデータベース", "OS論", "アルゴリズム論", "会計情報学", "メディアシステム学", "科学技術史", "情報システム基礎論", "統合情報システム学"};

CalendarTest(String title) { this.setTitle(title); this.setSize(1280, 960); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLayout(new BorderLayout()); this.addComponentListener(null); this.getContentPane.add(loginInstans.getLoginPanel()); this.setVisible(true); } public JPanel getCalendar() { JPanel allPanel = new JPanel(); //ページ上部 JButton prevMonth = new JButton("先月"); JButton nextMonth = new JButton("来月"); prevMonth.addActionListener(this); nextMonth.addActionListener(this); prevMonth.setActionCommand("prev"); nextMonth.setActionCommand("next"); nowDate = new JLabel("/"); //カレンダーの部分 JPanel calendarPart = new JPanel(); JLabel[] week = new JLabel[7]; { week[0] = new JLabel("日"); week[1] = new JLabel("月"); week[2] = new JLabel("火"); week[3] = new JLabel("水"); week[4] = new JLabel("木"); week[5] = new JLabel("金"); week[6] = new JLabel("土"); } dateButton = new JButton[6][7]; dateArea = new JTextArea[6][7]; for(int i = 0; i < 6; i++) { for(int j = 0; j < 7; j++) { dateButton[i][j] = new JButton(""); dateArea[i][j] = new JTextArea(""); calendarPart.add(dateButton[i][j]); calendarPart.add(dateArea[i][j]); } } for(int i = 0; i < 7; i++){ calendarPart.add(week[i]); } //教科リストの部分 JPanel subjectPart = new JPanel(); JScrollPane scroll = new JScrollPane(subjectPart); JButton[] subjectButton = new JButton[20]; for(int i = 0; i < 20; i++) { subjectButton[i] = new JButton(subjectList[i]); subjectPart.add(subjectButton[i]); } //時間指定の部分 JPanel timePart = new JPanel(); JCheckBox[] timeCheck = new JCheckBox[6];{ timeCheck[0] = new JCheckBox("1時限目"); timeCheck[1] = new JCheckBox("2時限目"); timeCheck[2] = new JCheckBox("3時限目"); timeCheck[3] = new JCheckBox("4時限目"); timeCheck[4] = new JCheckBox("5時限目"); timeCheck[5] = new JCheckBox("希望なし"); } JButton reloadButton = new JButton("更新"); for(int i = 0; i < 6; i++){ timePart.add(timeCheck[i]); } timePart.add(reloadButton); //ToDoの登録部分 JPanel todoPart = new JPanel(); String[] yearList = {"2015", "2016", "2017","2018", "2019", "2020"}; String[] monthList = {"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"}; String[] dayList = {"1日", "2日", "3日", "4日", "5日", "6日", "7日", "8日", "9日", "10日", "11日", "12日", "13日", "14日", "15日", "16日", "17日", "18日", "19日", "20日", "21日", "22日", "23日", "24日", "25日", "26日", "27日", "28日", "29日", "30日", "31日"}; JComboBox yearCombo = new JComboBox(yearList); JComboBox monthCombo = new JComboBox(monthList); JComboBox dayCombo = new JComboBox(dayList); JTextArea todoInput = new JTextArea(); JButton enterButton = new JButton("登録"); enterButton.addActionListener(this); enterButton.setActionCommand("enter"); todoPart.add(yearCombo); todoPart.add(monthCombo); todoPart.add(dayCombo); todoPart.add(todoInput); todoPart.add(enterButton); //申請ボタンと確認ボタン JPanel buttonPart = new JPanel(); JButton applicationButton = new JButton("申請"); JButton checkButton = new JButton("確認"); applicationButton.addActionListener(this); checkButton.addActionListener(this); applicationButton.setActionCommand("app"); checkButton.setActionCommand("check"); buttonPart.add(applicationButton); buttonPart.add(checkButton); //レイアウト calendarPart.setLayout(new GridLayout(1,1)); subjectPart.setLayout(new GridLayout(1,2)); timePart.setLayout(new GridLayout(2,1)); todoPart.setLayout(new GridLayout(2,2)); buttonPart.setLayout(new GridLayout(2,3)); //集約 allPanel.add(calendarPart); allPanel.add(subjectPart); allPanel.add(timePart); allPanel.add(todoPart); allPanel.add(buttonPart); getContentPane().add(allPanel,BorderLayout.CENTER); //returnします return allPanel; } public Boolean isLogin(String inputId, String inputKey) { try { File f = new File("a1.txt"); FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); String lines, readId,readKey,inputkey = new String(); Boolean loginFlag = false; while((lines = br.readLine()) != null) { String[] lineSplit = lines.split("<>"); readId = lineSplit[0]; readKey = lineSplit[1]; if(inputId.equals(readId)){ if(inputkey.equals(readKey)) { //成功 loginFlag = true; break; } } } return loginFlag; }catch(IOException ee){ System.out.println(ee); } } public void actionPerformed(ActionEvent e){ String command = e.getActionCommand(); if(command.equals("Login")) { if(isLogin(loginInstans.userword, loginInstans.password)) { //ログイン処理 JOptionPane.showMessageDialog(this, "認証に成功しました", "成功", JOptionPane.INFORMATION_MESSAGE); getContentPane().removeAll(); getContentPane().add(getCalendar()); }else { JOptionPane.showMessageDialog(this, "認証に失敗しました", "失敗", JOptionPane.INFORMATION_MESSAGE); loginInstans.pass.setText(""); loginInstans.user.setText(""); } } }

}
(Login.java)
//ログイン画面
import javax.swing.;
import java.awt.
;
import java.awt.event.*;

class Login extends JFrame{
JPasswordField user,pass;
String userword,password;

//ログインレイアウト
public Login(String title){
}
public JPanel getLoginPanel() {
JPanel p = new JPanel();
JLabel label1 = new JLabel("ユーザー名を入力\n");
JLabel label2 = new JLabel("パスワードを入力\n");
user = new JPasswordField(10);
pass = new JPasswordField(8);
user.setColumns(15);
pass.setColumns(15);
JButton buttondecide = new JButton("決定");
buttondecide.addActionListener(this);
buttondecide.setActionCommand("Login");

p.add(label1); p.add(label2); p.add(user); p.add(pass); p.add(buttondecide); return p; Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER);

}
}
###試したこと
課題に対してアプローチしたことを記載してください
Login.javaをCalendarTest.javaに継承
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
これはテキストエディター上でコンパイルしています

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

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

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

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

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

guest

回答2

0

ベストアンサー

コンパイルエラーですから、指摘された箇所(必要であれば、その周辺も)を修正してください。

CalendarTest.java:22シンボルが見つけられません

this.getContentPane.add(loginInstans.getLoginPanel());
シンボル:変数getContentPane

this(public class CalendarTest extends JFrame implements ActionListenerのオブジェクト)に変数getContentPaneが定義されていない事が原因です。
ちゃんと定義してください。

Login.java:22不適合な型:LoginをActionListenerに変換できません

buttondecide.addActionListener(this);

this(class Login extends JFrameのオブジェクト)は、ActionLister型でないことが原因です。
「引数のthisを、ActionLister型のオブジェクトに変える」
もしくは
「Loginクラスをimplements ActionListenerに変える」
という変更で対処できるかと思われます。

投稿2017/09/12 07:07

coco_bauer

総合スコア6915

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

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

meipuru03

2017/09/12 07:41

回答ありがとうございます。勉強不足でした。基本がわかっていれば容易に解決できるエラーでした。 再度この基本について復習したいと思います。ありがとうございました
guest

0

getContentPaneはメソッドですので、
this.getContentPane()と書かなければエラーになります。

投稿2017/09/12 07:06

masaya_ohashi

総合スコア9206

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

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

meipuru03

2017/09/12 07:12

ご回答ありがとうございます。その点について修正したところエラーが少なくなりました。ありがとうございます
LouiS0616

2017/09/12 14:55

どのgetContentPaneへのご指摘かわかりませんが、本質的な原因には当たらないのでは? そもそも、thisが省略不可能なメソッドってどんなのでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問