我正在創建搜索表單。當用戶在textField中輸入一個字符串並單擊按鈕Search時,程序將瀏覽Vector,如果Vector有任何元素,其名稱與輸入字符串相同,則將該元素的名稱打印到控制檯。 如果Vector沒有元素,名稱LIKE爲輸入字符串,我將在Vector中添加一個名稱爲輸入字符串的新對象。 例如:當我在textField上輸入「John」並按下按鈕Search時,如果Vector有一個名稱爲「John」的元素,我將在控制檯上打印「John」。如果Vector沒有「John」,我會將一個名爲「John」的新學生添加到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());
}
}
}
類學生:
執行用戶界面和主要功能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(); } }
「(爲什麼不是這個代碼的工作?「)尋求幫助調試問題」必須包括所期望的行爲,一具體問題或錯誤以及在問題本身中重現問題所需的最短代碼,而沒有明確問題陳述的問題對其他讀者沒有用處請參閱:如何創建[MCVE]「您擁有的是一個大代碼塊,沒有幾個細節。 – pvg
我編輯了問題 –
它仍然很混亂。嘗試將代碼降低到重現問題所需的絕對最低限度,並且清楚地描述您的問題 - 「不起作用」很難解釋。除了您的程序功能外,還要具體說明(包括任何錯誤等) - 您做了什麼,發生了什麼以及您的預期發生了什麼。 – pvg