Невозможно удалить искомое значение - PullRequest
0 голосов
/ 28 марта 2012

Класс ниже - мой класс удаления, я хочу удалить пользователей из базы данных, у меня есть класс Добавить и класс поиска, их общая база данных private Database db;.

package TakeMeOut;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class Delete extends JFrame implements ActionListener


{

    /** {@link JTextField} where the user number is entered */
    private  JTextField userID = new JTextField(7);

    /** {@link JTextArea} for the client information */
    private  JTextArea information = new JTextArea(5, 39);

    /**{@link JButton} Search button */
    private  JButton Deleteuser = new JButton("Delete");

    /**
     * Default constructor. Create a new search panel with a {@link JTextField} for client ID and a {@link JTextArea} for detailed
     * information on the client..
     */
    private Database db; 

    public Delete(Database db) 
        { this.db = db; 

        setLayout(new BorderLayout());
        setSize(450, 250);
        setTitle("Delete Client");

        /** dispose of the window when the close button is clicked*/
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel top = new JPanel();

        /** add the veritable of JButton to the top panel*/
        top.add(Deleteuser);
        /**add the bottom panel to the bottom of the screen*/
        add("North", top);

        top.add(new JLabel("Enter Client Number:"));
        top.add(userID);
        add("North", top);

        JPanel middle = new JPanel();
        middle.setLayout(new FlowLayout());
        middle.add(information);
        add("South", middle);

        /** do not allow enduser to set the size of the screen*/
        //setResizable(false);
        setResizable(false);
        setVisible(true);


        // listen to the button
        Deleteuser.addActionListener(this);
    }

    /**
     * delete user from database when the delete button is clicked
     */
    @Override
    public void actionPerformed(ActionEvent e) {

        User u = (userID.getText());
        db.removeUser(u); 

        information.setText(u.toString() + " has been deleted");    
    }

класс ниже - это мой класс базы данных, в котором есть метод remove, и я пытаюсь передать его классу Delete выше.

import java.util.*;
public class Database 
{/**             
    *   
    * Map of users keyed on userId              
    */
    Map <String, User> users; 


    /**    @Database          
    * the empty map  which would be used to  collect the users.                     
    */
    public Database() 
{      
        users = new HashMap<String, User>();

}



    /**
    * Type for checking users
    */
  public  static void main(String [] args){
             new Database();
            }     

    /** check if the UserID is already in use if so return false, else
     *   add key pair to the Map. 
     *   USERID will be key of map 
     *     @
    */
    public boolean addUser(User userIn) 
    {

        String keyIn = userIn.getUSERID(); 
        if (users.containsKey(keyIn)) 
        { 
            return false; 
        } 
        else 

        { 
            users.put(keyIn, userIn); 
            return true; 
        } 
    }



    /** 
     * @param remove the user with the given useridIn, from the Map
     * check if user was removed and does not equal to no null 
     * @return If the user is not  removed return false
     *  
     *  */
    public boolean removeUser(String useridln) 
    { 
        if (users.remove(useridln)!= null) 
        { 
            return true; 
        } 
        else 
        { 
            return false; 
        } 
    }

    /** 
     * return the number of users in the Map collection  
     * 
     * 
     * */
    public int getTotalNumberOfUsers()
    {
        return users.size();
    }


    /** return the user with the given userid or null if no such user
     * */
    public User getUser (String useridIn)
    {
        return users.get(useridIn);
    }



    /** return the set of users in the collection
     * set is used to store the set of users  and to get the set of keys.
     * iterate through the keys and put each value in the userSetn and return the set of users
     * 
     * 
     * */
    public Set<User> getAllUsers ()
    {  

        Set<User> userSet = new HashSet<User>(); 
        Set<String> theKeys = users.keySet(); 

        for (String userid : theKeys)
        {
            User theUser = users.get(userid);
            userSet.add(theUser);
        }
        return userSet; 


        }   

    public String toString(){

        return users.toString();
    }
}

класс ниже - мой класс User с методами возврата

public  class User  {

    /**declared attributes */
    private String username;  
    private String gender;
    private String age;
    public  String userid;

     /** User constructor with four  types of string objects and the declared methods */
      public User(String usernameIn, String genderIn, String ageIn, String useridIn) {

    /* declared methods*/
      username = usernameIn; 
      gender = genderIn;
      age = ageIn;
      userid = useridIn;
    }

      /**
       * 
       * @return
       */
    public String getUsername() {
      return username;
    }

/**
 * 
 * @return
 */
    public String getGender() {
      return gender;
    }

    /**
     * 
     * @return
     */
    public String getAge() {
      return age;
    }

    /**
     * 
     * @return
     */
    public String getUSERID() {
        return userid;
      }


    /**
     * ToString return the customized values
     */
    public String toString()
    {
        return"       "+ username +"     " + gender + "     " + age + " \n";
    }
  }

В классе Add я могу добавлять пользователей.

User u = new User(Inputusername.getText(),  selection , age.getText(), inputuserid.getText());
db.addUser(u);

Я хотел бы удалить добавленного пользователя из базы данных, но я не знаю, почему он не принимает его, поскольку передал строку в класс удаления.

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Мне удалось исправить, я вызывал его с объектом User вместо идентификатора пользователя

 User u =  db.getUser(userID.getText());             
  db.removeUser(userID.getText()); 
0 голосов
/ 28 марта 2012

Пожалуйста, попробуйте следовать Java Code Conventions , особенно правилам того, как поля и методы начинаются со строчной буквы.Это сделает ваш код намного проще для чтения.

Кроме того, постарайтесь сформулировать свой вопрос более четко.Что именно не работает?Каковы сообщения об ошибках или каково ожидаемое поведение по сравнению с фактическим поведением?

    User u = User db.getUser(userID.getText());             
    db.removeUser(u);     

Первая строка выглядит неправильно (что означает «= пользователь»?) Но большеважно:

    public boolean removeUser(String useridln) 

Mothod ожидает строку, а не объект пользователя, поэтому он должен работать, если вместо этого вы передаете userID.getText ().

Было ли этотвоя проблема?Я не уверен, поскольку вы также упоминаете «удаление искомого значения», но я не вижу поле поиска.

...