- ベストアンサー
はじめまして開発初心者です。
はじめまして開発初心者です。 conboBoxで、A, B, C, D, E, F, Gと作成しこの中から3つを選択をする。Dが1,2,3の選択項目の中に必ず入っていなくてはならない。ない場合はエラーとすると作成したいんですが、作成方法がわかりません。ご存知の方すみませんが教えていただけませんか、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
現状: (さんざん自分の目標をやろうとして苦悩した後、試しにと思って作ってみた) 残りの条件を満たしたものはすぐ出来たのだが、 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class MainClass extends JFrame{ ArrayList<String> labels = null; JComboBox comboBox[] = null; JButton button = null; JLabel label = null; MainClass(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new GridLayout(2, 3)); labels = new ArrayList<String>(); labels.add("A"); labels.add("B"); labels.add("C"); labels.add("D"); labels.add("E"); labels.add("F"); comboBox = new JComboBox[3]; ItemListener itemListener = new ItemListener() { public void itemStateChanged(ItemEvent e) { if(e.getStateChange() == ItemEvent.SELECTED){ for(int i = 0;i < comboBox.length;i++){ if(comboBox[i] != e.getItemSelectable()){ comboBox[i].removeItem(e.getItem()); } } }else if(e.getStateChange() == ItemEvent.DESELECTED){ for(int i = 0;i < comboBox.length;i++){ if(comboBox[i] != e.getItemSelectable()){ comboBox[i].addItem(e.getItem()); } } } } }; for (int i = 0;i < comboBox.length; i++){ java.util.ArrayList<String> temp = new ArrayList<String>(labels.subList(3,labels.size() - 1)); temp.add(0,labels.get(i)); comboBox[i] = new JComboBox(temp.toArray(new String[0])); c.add(comboBox[i]); comboBox[i].addItemListener(itemListener); } button = new JButton(); button.setText("チェック"); label = new JLabel(); ActionListener actionListener = new ActionListener(){ public void actionPerformed(ActionEvent e){ for(int i = 0;i < comboBox.length;i++){ if(comboBox[i].getSelectedItem().toString().equals("D")){ label.setText("正解"); return; } } label.setText("誤り"); } }; button.addActionListener(actionListener); c.add(button); c.add(label); this.setSize(400, 200); this.setVisible(true); } public static void main(String[] args){ MainClass f1 = new MainClass(); return; } } 自分の目標である ○UIを後から変更出来るようにするため上記の機能を満たすものはUI自体を利用して開発を行うものから扱いやすく設計すべきである。(ので、意図的に利用するコントロールの話を上記から排除するように勤めた) の機能の分割に苦戦している。ひょっとしたらしばらくかかるかもしれないなあ
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
これで何も聞かずに出来る人はエスパーだと思う。 課題原文ママなら課題にキレる。この課題だと ☆「A,B,C,D,E,F,G」がコンボボックスなのか、選択項目なのか明確でない ☆「1,2,3」が何なのかわからない。 ●A,B,C,D,E,F,Gをその選択項目とする、同じ選択肢の問題が3つあり、 ユーザーはそれぞれの問題の選択肢からそれぞれひとつずつ選択する。 選択する内容は重複を許す。(A,B,D以外にも、A,D,Dという選び方やD,D,Dという選び方もある) ユーザーはこれら3つの選択内容を送信する。 送信内容をチェックした際に、その送信内容に含まれる3つの選択肢中最低一つDが含まれていなければ誤りである。その時はその旨をユーザーに通知する。誤りのないデータが送信されたときは正常である旨をユーザーに通知する。 ○UIを後から変更出来るようにするため上記の機能を満たすものはUI自体を利用して開発を行うものから扱いやすく設計すべきである。(ので、意図的に利用するコントロールの話を上記から排除するように勤めた) ●SwingのJFrameを用いる。 ●各問題の選択項目の選択のため、コンボボックスを用いる。 ●送信のためにはユーザーがボタンを押す必要がある。(ボタンに表示される文字列は実装者が任意に決定出来る) ●誤りあるいは正常であることの通知にはラベルを用いる。(この文字列は実装者が任意に決定出来る) ○表示する文字列等は日本語以外の言語圏への配布も考慮して差し替えられるようにしてあるべきである。(が、実装経験があまりないので正しいやり方はよくわからん) ってことでOKか、聞いてきてもらえるかな?(補足要求)
お礼
ありがとうございました。 もっと勉強して理解していきたいと思います。 ご指導ありがとうございました。
補足
言葉足らずですみません。 himajin100000さんの考えで合っています。 重複は不可でお願いします。