- ベストアンサー
あるコンボボックスを選択するともう一方のコンボボックスが自動的に決まる方法
二つのコンボボックスがあります。 1つのコンボボックスをcb1、もう一方のコンボボックスをcb2とします。cb1の中にはA、B、Cという項目があります。 質問の内容は、例えばcb1のAを選択するとcb2の項目が自動でa、b、cになっている、cb1のBを選択するとcb2の項目が自動でd、e、fになっている、ということなのです。 こんな感じに自動的に状態が変化することは可能なのでしょうか?宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、こんな感じの事を求めているのですか コンボボックス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; // 変数宣言の終わり }
その他の回答 (2)
- tom11
- ベストアンサー率53% (134/251)
>> java.awt.EventQueue.invokeLater(new Runnable() { >>public void run() { >>new twocombo().setVisible(true); >>} >>}); はどういう意味なのでしょうか? Jbuilderや、netbeansなどjava のIDEでの、 mainがあるGUIのプログラムのお約束事です。 IDEが、自動で作ります。。 GUIのプログラムで、こうしないと、 実行が、不安定になる場合があるみたいです。 体験談!! ちなみに、jbuilderだと、swingの お約束ごとになります。
お礼
ふむふむお約束事なのですね。 何度も質問したのに丁寧に答えていただいてありがとうございました。
- akimix
- ベストアンサー率83% (5/6)
Javaで実装できるのかは判りませんが、JavaScriptでの実装は可能だと思います。 下記URLにサンプルが掲載されています。
お礼
ご返信ありがとうございます。 まさにこのプログラム通りです。ActionPerfomedメソッドをまた別に作ればよかったんですね。ありがとうございます。 ところで >> java.awt.EventQueue.invokeLater(new Runnable() { >>public void run() { >>new twocombo().setVisible(true); >>} >>}); はどういう意味なのでしょうか?