从 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
,因为您正在为它们提供吸气剂...
我目前正在构建酒店预订系统,但在从 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
,因为您正在为它们提供吸气剂...