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

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

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

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

Q&A

解決済

1回答

1307閲覧

java処理

kopuf

総合スコア5

Java

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

0グッド

0クリップ

投稿2017/05/03 14:54

編集2017/05/11 10:52

javaでゲームを作っているのですが
pan3を追加すると止まってしまいます。
譜面をクリアにする処理を書きたいのですがボタン実装ができません。
pan3を消すと動作はします。
理解力が乏しいので調べてみてもわかりませんでした
JPanel pan1, pan2, pan3;
JButton s_btn = new JButton("start");
JButton B_btn = new JButton("Clear");
JTextField txt = new JTextField(25);
public void init()
{
Container con = getContentPane();
pan1 = new JPanel();
pan2 = new JPanel();
pan3 = new JPanel();
con.add(pan1);
con.add(pan2 = new JPanel(), "South");
con.add(pan3 = new JPanel(), "NORTH");
pan1.addMouseListener( new MyMouseListener());
pan1.add(txt); //←new MyMouseListener(this)としないこと
pan1.setBackground(Color.white);
pan1.setForeground(Color.BLACK);
pan1.setSize(300, 450);
pan1.setBorder(BorderFactory.createLineBorder(Color.BLACK));
pan2.add(s_btn);
s_btn.setBackground(Color.pink);
s_btn.addActionListener(this);
pan2.setBorder(BorderFactory.createLineBorder(Color.blue));
pan2.setBackground(Color.BLACK);
pan3.add(B_btn);
B_btn.setBackground(Color.pink);
B_btn.addActionListener(this);
pan3.setBorder(BorderFactory.createLineBorder(Color.blue));
pan3.setBackground(Color.BLACK);
のnew JButton("Clear"); が表示されません。
書き間違え等ありましたらお教えください。
試してみたところ
B_btn.addActionListenerの部分を消してみたり
NORTHは上に表示できるということで入力してみました
pan3を記入したまま動作させよるとするとappletが初期化されていません。と下に表示され真っ白の画面のまま進みません。
消すと作動します。

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

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

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

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

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

kei344

2017/05/09 15:42

回答が付いた質問の編集は慎重に行ってください。タイプミス程度なら修正する事もありますが、本文を削除するのはやめましょう。
guest

回答1

0

ベストアンサー

質問者さんが躓かれた要因が色々考えられるのですが、以下は自分の推測によるコメントです。

NORTHは上に表示できるということで入力してみました

自分には、質問者さんが「しかるべき仕様を知るのに、信用のおけないサイトを参考にしたから」ではないかと思えました。多分、どこかのサイトに以下のように書いた例が載っていたのでしょう。(実際に探してみると確かにそういうサイトは存在します)

add(childComponent, "South");

もしそうなら・・・この書き方は「たまたまそれで動くとしても、真っ当なコードにおいては、決して使ってはいけない書き方」の典型例だと思います。市販の教科書、あるいはちゃんとしたサイトでは決してそのような書き方になっておらず、次のようになっていることに気づくと思います。

add(childComponent, BorderLayout.SOUTH);

"South"でもBorderLayout.SOUTHでも、動けばいいんじゃないかと思われるかも知れません。しかし人は間違いを犯すものですからtypo(ちょっとした綴りミス)もよくやりがちです。前者の書き方では"South"と書くべきところ誤って"Suoth"とtypoしてしまった場合、実行時にならないと気づけません。しかし後者はBorderLayout.SUOTHというtypoはコンパイル時に気づけます。それが後者の書き方をすべき理由です。これはJavaに限った話ではなく、プログラミング言語全般で通用する話です。

また、Javaでは(というより多くの言語でも)文字列の比較は大文字小文字が区別されるという点も注意してください。

結論:以下をお勧めします。
「一般の方のブログなどのサンプルコードを参考にするのは、サンプルの意味を解釈できる程度の知識がついてからにし、最初は時間を節約するために、教科書を参照する
「コードは一字一句正確なタイプを心がける


余談ですが、実行時にエラーになったとしても本件の例では例外のスタックトレースから原因を突き止めることが可能です。しかし質問者さんは例外メッセージ自体に気づいておられないと思います。例外の内容やスタックトレースの中身の見方がわからないのは初心者にありがちなことですが、その点も学ぶべきことの一つと言えるでしょう。

投稿2017/05/04 03:17

KSwordOfHaste

総合スコア18392

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問