Вот код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
class Phone{
private String name;
private String phone_number;
private String address;
public Phone(String name,String phone_number, String address) {
this.name = name;
this.phone_number = phone_number;
this.address = address;
}
String getName() {return this.name;}
String getNumber() {return this.phone_number;}
String getAddress() {return this.address;}
}
public class Phone_Book extends JFrame{
private JTextArea ta = new JTextArea();
private JButton lookup = new JButton("lookup");
private JButton search = new JButton("search");
private JButton input = new JButton("input");
private JButton remove = new JButton("remove");
private JLabel name = new JLabel("name");
private JLabel phone_number = new JLabel("phone_number");
private JLabel address = new JLabel("address");
private JTextField name_input = new JTextField();
private JTextField phone_number_input = new JTextField();
private JTextField address_input = new JTextField();
private HashMap<String,Phone> hashPhoneBook = new HashMap<String, Phone>();
public Phone_Book() {
setTitle("Phone Book");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(null);
//*********************PhoneBook Design ********************************************
JPanel buttonPanel = new JPanel();
buttonPanel.add(inquiry);
buttonPanel.add(search);
buttonPanel.add(input);
buttonPanel.add(remove);
buttonPanel.setLayout(new GridLayout(1,4));
buttonPanel.setSize(350,30);
buttonPanel.setLocation(670,70);
JPanel labelPanel = new JPanel();
labelPanel.add(name);
labelPanel.add(phone_number);
labelPanel.add(address);
labelPanel.setLayout(new GridLayout(3,1));
labelPanel.setSize(80,150);
labelPanel.setLocation(670,110);
JPanel textPanel = new JPanel();
textPanel.add(name_input);
textPanel.add(phone_number_input);
textPanel.add(address_input);
textPanel.setLayout(new GridLayout(3,1,0,25));
textPanel.setSize(260, 140);
textPanel.setLocation(750, 120);
JScrollPane js = new JScrollPane(ta);
js.setSize(600, 300);
js.setLocation(20, 10);
c.add(js);
c.add(buttonPanel);
c.add(labelPanel);
c.add(textPanel);
//********************** PhoneBook Function **************************************************
...
//---- problem occurs-------------------------------------
search.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.setText(" ");
Phone p = hashPhoneBook.get(name_input.getText());
if(p == null) ta.append(name_input.getText()+"doesn't exist\n");
else {
ta.append(p.getName()+" "+p.getNumber()+" "+p.getAddress()+"\n");
}
name_input.setText(" ");
}
});
//------------------------------------------------------
...
setSize(1100,400);
setVisible(true);
}
public static void main(String[] args) {
new Phone_Book();
}
}
Вот проблема.
Я вижу все значения (включая первое значение, которое я впервые ввел после запускапрограмма), когда я нажимаю кнопку «поиск» (я думал, что она не нужна, я не вставил ее в этот код).
Когда я пытаюсь найти или удалить первое значение из HashMap
, оно не работает.Только я получил «ноль». Но когда я нажал «пробел» и ввел значение, это сработало хорошо.(например, «Давид» -----> «Давид»)
Интересно, почему это происходит?