検索フォームを作成しています。ユーザがtextFieldに文字列を入力してSearchボタンをクリックすると、プログラムはVectorをブラウズします。Vectorには、入力文字列LIKEという名前の要素があれば、その要素の名前をコンソールに出力します。 Vectorに入力文字列LIKEという名前の要素がない場合、Vectorに入力文字列である名前の新しいオブジェクトを追加します。 例:textFieldに「John」と入力してボタン検索を押すと、「John」という名前の要素がある場合、コンソールに「John」と表示されます。 Vectorに "John"がない場合、その名前の "John"という新しいStudentをVectorに追加します。
私の問題は、検索機能をbtnSearchのアクションリスナーに入れても、ボタンのアクションリスナー内で検索機能が動作しないように見えることです。私は半日を修正しようとしますが、何が間違っているのかまだ分かりません。だから私を助けてください!ここに私の全体の実行可能なプログラムは次のとおりです。多くの学生が含まれてい
*クラスのグループ:forループ内で新しい要素をVectorに追加できません
public class Group {
protected Vector<Student> listStd;
public Group() {
}
public Group(Vector<Student> listStd) {
this.listStd = listStd;
}
public Vector<Student> getListStd() {
return listStd;
}
public void setListStd(Vector<Student> listStd) {
this.listStd = listStd;
}
public void addStudent(Student std){
listStd.add(std);
std.setGr(this);
}
public void search(String name){
for(int i=0;i<this.getListStd().size();i++){
if(this.getListStd().get(i).getName().equalsIgnoreCase(name)){
System.out.println(this.getListStd().get(i).getName());
}
else{
this.getListStd().add(new Student(name));
System.out.println("not found");
}
}
}
public void print(){
for(Student std:this.getListStd()){
System.out.println(std.getName());
}
}
}
クラスの学生:UIと主な機能を実行
public class Student { protected String name; protected Group gr; public Student(){ } public Student(String name){ this.name = name; } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public Group getGr() { return gr; } public void setGr(Group gr) { this.gr = gr; } @Override public String toString() { return this.getName(); } }
UIクラス:
public class UI extends JFrame{ JTextField txtSearch; Vector<Student> listStd; JButton btnSearch,btnDisplay; Group gr; public UI(String title){ super(title); addControls(); addEvents(); } public void addControls(){ listStd = new Vector<Student>(); gr = new Group(); gr.setListStd(listStd); gr.addStudent(new Student("Kurapika")); gr.addStudent(new Student("Leorio")); gr.addStudent(new Student("Hisoka")); gr.addStudent(new Student("Meruem")); gr.addStudent(new Student("Gon")); gr.addStudent(new Student("Killua")); Container con = getContentPane(); JPanel pnMain = new JPanel(); pnMain.setLayout(new BoxLayout(pnMain, BoxLayout.Y_AXIS)); JPanel pnSearch = new JPanel(); JLabel lblSearch = new JLabel("Write student name to search "); txtSearch = new JTextField(10); pnSearch.add(lblSearch); pnSearch.add(txtSearch); pnMain.add(pnSearch); JPanel pnButton = new JPanel(); btnSearch = new JButton("Search"); btnDisplay = new JButton("Display"); pnButton.add(btnSearch); pnButton.add(btnDisplay); pnMain.add(pnButton); con.add(pnMain); } public void addEvents(){ btnSearch.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { gr.search(txtSearch.getText()); } }); btnDisplay.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { gr.print(); } }); } public void showWindow(){ this.setSize(300,200); this.setState(MAXIMIZED_BOTH); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); } public static void main(String[] args){ UI ui = new UI("Test"); ui.showWindow(); } }
「(なぜこのコードは動作していない? ")デバッグ助けを求める質問は、」必要な動作を含める必要があり、あなた自身が持っているものは大きなコードのブロブであり、あなたが持っているものは、他の読者にとっては有用ではありません。いくつかの詳細はありません。 – pvg
私は質問を編集しました –
それはまだかなり混乱しています。問題を再現するために必要な最小限のコードを減らし、問題をはっきりと記述してください。「うまくいかない」と解釈するのは難しいです。あなたが持っているプログラム機能の概要のほかに、具体的に(エラーなどを含む) - あなたがしたこと、起こったこと、起こることを期待したこと。 – pvg