• ベストアンサー

あるコンボボックスを選択するともう一方のコンボボックスが自動的に決まる方法

二つのコンボボックスがあります。 1つのコンボボックスをcb1、もう一方のコンボボックスをcb2とします。cb1の中にはA、B、Cという項目があります。 質問の内容は、例えばcb1のAを選択するとcb2の項目が自動でa、b、cになっている、cb1のBを選択するとcb2の項目が自動でd、e、fになっている、ということなのです。 こんな感じに自動的に状態が変化することは可能なのでしょうか?宜しくお願いします。

  • Java
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんにちは、こんな感じの事を求めているのですか コンボボックス1を選択すると、 コンボボックス2の項目が変わります。 /* * twocombo.java * * Created on 2006/02/06, 10:46 */ package combolist; import javax.swing.DefaultComboBoxModel; /** * * @author */ public class twocombo extends javax.swing.JFrame { Object [] combo1 ={"a","b","c"}; Object [] combo2 ={"d","f","g","h"}; Object [] combo3 ={"i","j","k"}; Object [] combo4 ={"l","m","n","o"}; DefaultComboBoxModel com1,com2,com3,com4; /** Creates new form twocombo */ public twocombo() { com1= new DefaultComboBoxModel(combo1); com2= new DefaultComboBoxModel(combo2); com3= new DefaultComboBoxModel(combo3); com4= new DefaultComboBoxModel(combo4); initComponents(); jComboBox1.setModel(com1); jComboBox2.setModel(com2); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" 生成されたコード"> private void initComponents() { jComboBox1 = new javax.swing.JComboBox(); jComboBox2 = new javax.swing.JComboBox(); getContentPane().setLayout(null); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jComboBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBox1ActionPerformed(evt); } }); getContentPane().add(jComboBox1); jComboBox1.setBounds(50, 60, 110, 21); getContentPane().add(jComboBox2); jComboBox2.setBounds(250, 60, 110, 21); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-408)/2, (screenSize.height-332)/2, 408, 332); } // </editor-fold> private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) { if (jComboBox1.getSelectedItem().equals(combo1[0])){ jComboBox2.setModel(com2); }else if (jComboBox1.getSelectedItem().equals(combo1[1])){ jComboBox2.setModel(com3); }else { jComboBox2.setModel(com4); } // ここに処理コードを追加: } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new twocombo().setVisible(true); } }); } // 変数宣言 - 編集不可 private javax.swing.JComboBox jComboBox1; private javax.swing.JComboBox jComboBox2; // 変数宣言の終わり }

kamakuragengorou
質問者

お礼

ご返信ありがとうございます。 まさにこのプログラム通りです。ActionPerfomedメソッドをまた別に作ればよかったんですね。ありがとうございます。 ところで >> java.awt.EventQueue.invokeLater(new Runnable() { >>public void run() { >>new twocombo().setVisible(true); >>} >>}); はどういう意味なのでしょうか?

その他の回答 (2)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

>> java.awt.EventQueue.invokeLater(new Runnable() { >>public void run() { >>new twocombo().setVisible(true); >>} >>}); はどういう意味なのでしょうか? Jbuilderや、netbeansなどjava のIDEでの、 mainがあるGUIのプログラムのお約束事です。 IDEが、自動で作ります。。 GUIのプログラムで、こうしないと、 実行が、不安定になる場合があるみたいです。 体験談!! ちなみに、jbuilderだと、swingの お約束ごとになります。

kamakuragengorou
質問者

お礼

ふむふむお約束事なのですね。 何度も質問したのに丁寧に答えていただいてありがとうございました。

  • akimix
  • ベストアンサー率83% (5/6)
回答No.1

Javaで実装できるのかは判りませんが、JavaScriptでの実装は可能だと思います。 下記URLにサンプルが掲載されています。

参考URL:
http://www.openspc2.org/reibun/javascript/form_selectmenu/015/index.html

関連するQ&A

  • エクセルVBA コンボボックスからの選択

    コンボボックスにある選択項目を選択した後、 エクセルの指定されたセルへ選択した項目を 貼り付けたいのですが、どのように指示したら よいのでしょうか? 例えば コンボボックス内の選択項目が A・B・Cとあったとします、その項目の 中からAを選択したら、作業中のsheetの A1のセルへAと表示させるにはどうしたら よいのでしょうか? アドバイスお願い致します。

  • コンボボックス

    コンボボックスから選択した内容によってそれに関するコンボボックスの内容を変えたいと思っています。 例えば コンボボックスA 書類1  分類a 書類2  分類a 書類3  分類b 書類4  分類c コンボボックスB 提出先1  分類a 提出先2  分類b 提出先3  分類b 提出先4  分類c と言う風になっているのですが、 コンボボックスAの書類1を選択したらコンボボックスB と共通の分類の提出先名がコンボボックスに表示したいのです。 書類3を選択すると、コンボボックスBには提出先2、提出先3が表示されるといった感じです。 ACCESS2000を使用しています。 よろしくお願いします。

  • コンボボックスを連動させる仕組みの正式名称は?

    コンボボックスAとBの二つがあります。 Aで選択された項目によって、Bの選択できる内容が変化する、というよくあるコンボボックスの仕組みですが。。 こういった仕組みの正式名称などはあるでしょうか?(Accessでは○○、Javaでは××という、など。。) 特に.NETにおける正式名称などがあったら、教えて頂けると嬉しいです。 ご助言よろしくお願い致します。

  • エクセルのマクロのコンボボックスへ入力した

    エクセルのマクロのコンボボックスへ入力した値をセルに表示する際のことで質問があります。 ABCDEという5つのコンボボックスから、A1、A2、A3,A4、A5のセルへ入力していますが、時々CやDの値がなくてEの値を左詰めするというか空白のセルを作らずに入力したいです。 例えばAのコンボボックスには入力でA1、Bのコンボボックスは未入力でCのコンボボックスに入力した値をA2のセルへ入力といった具合にしたいです。 コンボボックスBが未入力なら、 ・コンボボックスCの値をBへ ・コンボボックスDの値をCへ ・コンボボックスEの値をDへ ・コンボボックスEは空白に コンボボックスCが未入力なら、 ・コンボボックスDの値をCへ ・コンボボックスEの値をDへ ・コンボボックスEは空白に コンボボックスDが未入力なら、 ・コンボボックスEの値をDへ ・コンボボックスEの値を入力 という手順を挿入。 で本来のやりたいことの コンボボックスA~EをセルA1:A5の範囲へ入力。 と教えてもらったんですが、それを生かせず、自分なりに考えてみて IF Then Else を使ってA3まではやれたんですが、A4、A5がうまくできなくて挫折しています。 http://www.max.hi-ho.ne.jp/happy/YNxv233.htmlを参考にしてくださいと教わったのですがどれが使えるのかもわからず・・・・。 わかんないことばかりですいません。

  • VBA コンボボックスの条件分岐

    コンボボックスの条件分岐のコードが間違っているみたいで 調べても分からなかったので質問します。 やりたいこと 『マスタ』という名前のシート内のセルを参照し マスタシートには C2セル『A』C3セル『B』C4セル『C』と それぞれアルファベットがあります。 そこでコンボボックスを使用し コンボボックス22にC2~C4セルを選択できるようにし 例えばC2セルを選択したら コンボボックス21の参照範囲をマスタシート内の D2~D13セルを選択できるようにし C3セルを選択したら コンボボックス21の参照範囲をマスタシート内の E2~E13セルを選択できるようにしたいのです。 すいませんがコードを記載して頂けますと 助かります。 Private Sub UserForm_Activate() '----------------------- With ComboBox22 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!C2:C4" End With '↑こうすればコンボボックス22のマスタシートのC2からC4まで値を選択できるようになります。 '------------------------わかりやすく区切っています。 '--------------------------------------- If UserForm1.ComboBox22 = "A" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!D2:D13" End With End If '↑コンボボックス22の値が(C2セルの値がAなら)コンボボックス21をマスタシートのD2からD13までを選択できるようにしたい If UserForm1.ComboBox22 = "B" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!E2:E13" End With End If '↑コンボボックス22の値が(C3セルの値がBなら)コンボボックス21をマスタシートのE2からE13までを選択できるようにしたい '----------------------------------------区切っています。 End Sub

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

  • シート上のコンボボックスの使い方

    シート上のコンボボックスの使い方 現在作っている物があるのですが、色々と調べてはみるものの解決出来なくて困っています。 ☆やりたいこと シート1 コンボボックスA コンボボックスB コンボボックスC 一覧表(A1~A16)の枠だけが書かれているもの コンボボックスA・・・青森 秋田 岩手 コンボボックスB・・・100 200 300 コンボボックスC・・・北 東 西 南 シート2 コンボボックスAとBとCの選択されたものによって選ばれる一覧表(例A1~E16)のデータ ☆シート1にてコンボボックスを3種類選択した時に、シート1枠だけの一覧表にシート2のデータが表示される! ということがやりたいです。 説明がアバウトすぎて申し訳ありませんが、初心者なりに色々やった結果が惨敗に終わっている状態です。 皆様のお力を貸していただきたく思います。

  • (アクセス)コンボボックスの選択結果をレコードに

    MSオフィスのAccessについて質問です。 二つのテーブルがあるとします -------- <T業種> 業態    業種  コード(オートナンバー) A業態   a業   1 A業態   b業   2 A業態   c業   3 B業態   d業   4 B業態   e業   5 -------- <T企業> 社名 コード A社  1 B社  1 C社  2 -------- (目的) フォーム上に<T企業>を参照するコンボボックスを二つ作り、 業態を選ぶと業種が選べるようにする。 そして、選んだ組み合わせのコードを<T企業>に入れ、 レコード移動したらコンボボックス内の業態業種も変わるようにしていく。 (質問内容) 現在、コンボボックスで業態を選ぶと業種が選べるようにはなっています。 しかしながら、コンボボックスで選んだコードが<T企業>に反映されません。 選択肢を変えても<T企業>のコードナンバーが変わらず、 手動でナンバーを変えてもA社、B社、C社のコンボボックスの内容が変化しません。 (環境) Access2000 ソフトが古く環境面からお答えしにくいかもしれません。急遽データベースを作ることになり、とりあえず社内で眠っていたソフトを活用し、今後活用できそうならアップグレードするという予定になっております。 私自身も最近Accessの勉強を始めたばかりで深くは理解しておりません。 どうかご教示よろしくお願いします

  • コンボボックスに、組み込むマクロ

    こんにちは。 一人ではどうしたらよいか、わからないので、お判りの方がいらっしゃいましたら、お願い致します。 コンボボックスで、選択したIDで、別シートからの数値が表示されるシートがあります。 総計は、今のままでも出るのですが、あるカテゴリー: 例えば(会社ID)<H1,H2,H3>を小計1、<H1,H2,H3,H4>を小計2として表示させたいのです。 関数でも、マクロでも構いませんので、方法があれば教えてください。 Sheet1(集計表) A1:コンボボックス(会社名)選択  B1:会社ID(=VLOOKUP(A1,CD表!A:D,4,FALSE)             C2:科目(10) A3:項目名 B3:項目ID C3:件数 D3:金額 (人件費)   (455)  (12) (500000) ★SUMIF関数で、各数値をdataシートから持ってきています。 Sheet2(data) A列(ID) B列(会社名) C列(科目)D列(項目名) E列(項目ID)F列(件数) G列(金額) Sheet3(CD表) A列(ID)B(会社名)C(会社ID)

  • Excelで、コンボボックスで選択したとき特定のマクロを動かす

    1つのシートにコンボボックス(フォームコントロール)を2つ並べてあります。  コンボボックス”ドロップ1”   コンボボックス”ドロップ2”  【選択肢】             【選択肢】  ・1回                ・A  ・2回                ・B  ・3回 とあります。それぞれのコンボボックスの選択肢は、別のシートに名前を定義して表示するようにしてあります。 その際、上の例だとマクロを6種類用意してあります。  (1) 1回A  (2) 1回B  (3) 2回A  (4) 2回B  (5) 3回A  (6) 4回B とあり、1つ目のコンボボックスで「2回」を、2つ目のコンボボックスで「B」を選んだ場合、 (4)のマクロを実行するようにするにはどのようにしたらよいでしょうか? ※ コンボボックスは両方選ばない限りはマクロを実行させません。 また、両方既に選択してあり、そのマクロが一度実行させた後、一方だけ変更しても他のマクロを実行させたいです。 また、本件とは別の内容となっていまいますが、コンボボックスなどが”フォームコントロール”と”ActiveX コントロール”と2種類あるのですが、どのように違うのでしょうか? ちなみにExcelは2007です。ご教授よろしくお願いします。

専門家に質問してみよう