从 JTextField 中检索值

Retrieving Values From A JTextField

我目前正在构建酒店预订系统,但在从 JTextField 检索和设置其他值时遇到问题。

我想做的是检索输入到文本字段中的值,然后将该值设置为另一个 class.

中的字符串

在这里,我尝试从 JTextField 中检索值:

@Override
public void actionPerformed(ActionEvent event) {
    GuestInfo gi = new GuestInfo();

    if (event.getSource()==roomView)
    {
        roomViewFrame.setVisible(true);
        roomViewFrame.setSize(1000, 600);

    }

    if (event.getSource()==confirmGuestInfo)
    {
        String firstNameValue = firstNameInput.getText();
        if (firstNameValue.equals("")){
            System.out.printf("Please input first name!");
        }
        else{
            firstNameValue = gi.getFirstName();
        }

        String lastNameValue = lastNameInput.getText();
        if (lastNameValue.equals("")){
            System.out.printf("Please input last name!");
        }
        else{
            lastNameValue = gi.getLastName();
        }

        String addressValue = addressInput.getText();
        if (addressValue.equals("")){
            System.out.printf("Please input address!");
        }
        else{
            addressValue = gi.getAddress();
        }

        String phoneNumberValue = phoneNumberInput.getText();
        if (phoneNumberValue.equals("")){
            System.out.printf("Please input phone number!");
        }
        else{
            phoneNumberValue = gi.getPhoneNumber();
        }

这是我的客人信息 ("gi") class:

import java.util.*;

import javax.swing.JButton;
import javax.swing.*;
public class GuestInfo {

    public static String firstName;
    public static String lastName;
    public static String address;
    public static String phoneNumber;
    public static String numberOfGuests;
    public static String status; //Still checked in or checked out?
    public static String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public static String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public static String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getNumberOfGuests() {
        return numberOfGuests;
    }

    public void setNumberOfGuests(String numberOfGuests) {
        this.numberOfGuests = numberOfGuests;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }





}


/*
 *  JFrame frame = new JFrame();
    JButton button = new JButton("YES");

 * public GuestInfo()

{
frame.setLayout(null);
frame.setSize(600, 600);
frame.setVisible(true);
frame.add(button);
button.setBounds(10, 200,300, 300);

}*/

因此,根据您提供的有限信息,这没有意义...

String firstNameValue = firstNameInput.getText();
if (firstNameValue.equals("")){
    System.out.printf("Please input first name!");
}
else{
    firstNameValue = gi.getFirstName();
}

基本上,您已从 firstNameInput 字段中请求值,检查它是否为空,但如果不是,您已立即将 gi 中的值分配给值 firstNameValue,根据 GuestInfo gi = new GuestInfo(); 的用法,无论如何都会使值变为空白...

那么,您只接受 UI 中的空白值吗?

这个public static String firstName;也是一个非常非常糟糕的主意。当您有不止一位客人时会发生什么?他们共享相同的信息?

正如 MadProgrammer 所说,基于所提供的有限信息,我假设在您的 actionPerformed 方法中,您正在获取所有来宾信息以保存在 guestInfo class 上。如果是这样的话,我想你的意思是使用 setter 方法而不是 getters,如:

String firstNameValue = firstNameInput.getText();
if (firstNameValue.equals("")){
    System.out.printf("Please input first name!");
}
else{
    //firstNameValue = gi.getFirstName(); //not this
    gi.setFirstName(firstNameValue); //but this
}

并且您在 guestInfo 上的所有属性都应该属于 private 范围而不是 public,因为您正在为它们提供吸气剂...