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

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

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

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

Swing

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

Q&A

解決済

2回答

1066閲覧

java 指定したJLabelがあるか判定したい

Alpa

総合スコア80

Java

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

Swing

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

0グッド

0クリップ

投稿2017/10/05 21:50

Jpanelに指定したJLableがあるか判定したい
のでどうすればいいか教えてください!

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

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

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

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

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

umyu

2017/10/06 10:30

判定したい理由を質問文に追加して頂くことは可能ですかー?
guest

回答2

0

ベストアンサー

swingではコンポーネントは「たかだか一つの特定の親に含まれる」というルールがあります。どの親にも含まれてなければ「含まれている親がいない」という意味で「親はnull」という状態となります。一方swingコンテナは一般に複数の子供コンポーネントを持ちます。

なので「あるコンテナの全ての子供の中から特定の子供がいるか調べる」より「子供の親を調べる」方が簡単です。

つまり、あるJLabelインスタンス=label, あるJPanelインスタンス=panelがあったとして、labelがpanelの子供かどうか判定するには、こうすればよいです。

java

1if (label.getParent() == panel) { 2 // labelはpanelに含まれている(panelの子供である) 3} else { 4 // 含まれてない 5}

追記:suyamaさんの回答を拝見して気づいたので質問者さんへ補足します。

suyamaさんの方法は「ある条件であるようないずれかのJLabelをJPanelインスタンスが含むか」を判定する場合の方法です。例えば「名前が"aaa"のJLabelが含まれるか」判定したい場合に適しています。
一方自分の方法は「判定対象のJLabelインスタンスがわかっていて、それが特定のJPanelインスタンスに含まれるか」を判定する方法です。

投稿2017/10/05 22:45

編集2017/10/05 23:00
KSwordOfHaste

総合スコア18394

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

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

Alpa

2017/10/06 10:49

ありがとうございます しっかり動作しました!
guest

0

まずはJavadocを参照するようにしましょう。

JPanel (Java Platform SE 8 )

上記を見ると、JPanelは java.awt.Container から継承されたメソッドとしてgetComponentやgetComponentsを持つことが分かります。
それぞれのメソッドの説明を見るとgetComponentsには注意事項があるようなので、getComponentCountで要素数を取得して、getComponentで各要素を取得して対応する形がよさそうです。

コードにすると下記のようになるでしょうか。

java

1for (int i = 0; i < jPanel.getComponentCount(); i++) { 2 Component component = jPanel.getComponent(i); 3 if (component instanceof JLabel) { 4 // FIXME 指定したJLabelか比較する処理を記述 5 } 6}

投稿2017/10/05 22:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問