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

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

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

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

Swing

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Javaアプレット

Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

Q&A

解決済

1回答

590閲覧

javaのswingのコンボボックスについてです。

bbiiq

総合スコア51

Java

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

Swing

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Javaアプレット

Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

0グッド

0クリップ

投稿2022/10/20 06:40

前提

javaのswingでアプリを開発している初心者なのですが、コンボボックスについて質問があります。
コンボボックスを、別のコンボボックスで選択した項目によって表示するようなことは可能なのでしょうか?
可能ならばどのようにして実現できるのでしょうか?

実現したいこと

二次元配列やMap、Listのような構造のコンボボックスを生成できれば、別のコンボボックスで選択した項目によってコンボボックスを表示できるのではないかと考えています。

どなたかご教示いただけると幸いです。

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

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

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

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

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

episteme

2022/10/20 06:55

combo-1 で "くだもの" が選択されたら combo-2 の選択肢は "りんご", "みかん", ”もも” combo-1 で "やさい" が選択されたら combo-2 の選択肢は "たまねぎ", "にんじん", ”じゃがいも” ... みたいなこと? Map<種類,選択肢集合> ひとつつくっておいて、combo-1で選択されたもので Mapを検索し、得られた選択肢集合で combo-2 を埋めればいいんじゃね?
bbiiq

2022/10/20 07:13

なるほど。 ありがとうございます。助かりました。
jimbe

2022/10/20 10:17 編集

>二次元配列やMap、Listのような構造のコンボボックスを生成 とアイデアはあるようですので、それを形にしてみるのが良いと思います。 出来るか出来ないかではなく、実現させるために考えコードを書くことです。 java アプレットは swing とは関係ありません。また、 eclipse は単なるツールで、こちらも swing とは関係ありません。
guest

回答1

0

ベストアンサー

データは episteme さんの「質問へのコメント」から頂きました。

java

1import java.awt.event.ItemEvent; 2import java.util.HashMap; 3import java.util.Map; 4 5import javax.swing.*; 6 7public class ComboBoxTest extends JFrame { 8 public static void main(String[] args) { 9 SwingUtilities.invokeLater(() -> new ComboBoxTest().setVisible(true)); 10 } 11 12 ComboBoxTest() { 13 super("ComboBoxTest"); 14 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 15 setSize(320, 200); 16 setLocationRelativeTo(null); 17 18 Map<String,String[]> map = new HashMap<String,String[]>(); 19 map.put("くだもの", new String[]{"りんご","みかん","もも"}); 20 map.put("やさい", new String[]{"たまねぎ","にんじん","じゃがいも"}); 21 22 JComboBox<String> combobox1 = new JComboBox<String>(new DefaultComboBoxModel<String>(map.keySet().toArray(new String[map.size()]))); 23 JComboBox<String> combobox2 = new JComboBox<String>(); 24 25 getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); 26 add(combobox1); 27 add(combobox2); 28 29 combobox1.addItemListener(e -> { 30 if(e.getStateChange() == ItemEvent.SELECTED) combobox2.setModel(new DefaultComboBoxModel<String>(map.get(e.getItem()))); 31 }); 32 combobox1.setSelectedIndex(-1); //選択無し 33 combobox1.setSelectedIndex(0); //↑ が無いと変化無しでイベントが通知されない 34 } 35}

スクリーンショット

投稿2022/10/20 11:15

jimbe

総合スコア12632

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

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

TN8001

2022/10/20 12:57

> //↑ が無いと変化無しでイベントが通知されない ActionListenerだと変化しなくても呼ばれますね。 combobox1.addActionListener(e -> { var item = (String) combobox1.getSelectedItem(); combobox2.setModel(new DefaultComboBoxModel<>(map.get(item))); }); combobox1.setSelectedIndex(0);
jimbe

2022/10/20 14:49 編集

若干動作が異なりますが、そちらのほうが stateChange とか余計な心配要らないので良いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問