Как получить значения из текстовых полей и использовать их в другом классе? - PullRequest
0 голосов
/ 01 января 2019

У меня есть графический интерфейс, который позволяет пользователю вводить свои личные данные.Я хочу получить всю эту информацию и использовать ее в другом классе для создания экземпляра этого человека.Я продолжаю получать

на нестатический метод getValues ​​(String, String ...) нельзя ссылаться из статического контекста

, даже если ни один из моих методов не является статическим.

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

В этом классе я пытаюсь получить значения из графического интерфейса пользователя:

public class PatientStrategy implements IAccountStrategy {

@Override
public void createAccount(String accountType, String firstname, String lastname,
          String address, String postcode, String sex, Integer age){
    PMSGUI.getValues(accountType, firstname, lastname, address, postcode, sex, age);
}

И этот метод я использую в самом графическом интерфейсе для получения значений из текстовых полей:

public class PMSGUI extends javax.swing.JFrame {

public void getValues(String accountType, String firstname, String lastname, String address,
                      String postcode, String sex, Integer age) {
    accountType = cboAccountType.getSelectedItem().toString();
    firstname = txtFirstName.getText();
    lastname = txtLastName.getText();
    address = txtAddress.getText();
    postcode = txtPostcode.getText();
    sex = cboSex.getSelectedItem().toString();
    age = Integer.parseInt(txtAge.getText());
}

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

Я новичок в программировании на Java, и поэтому я знаю, что я, вероятно, все об этом не так.Любая помощь приветствуется!

1 Ответ

0 голосов
/ 01 января 2019

Сообщение об ошибке говорит о том, что getValues(), нестатический метод, нуждается в нестатическом контексте.Этот контекст предоставляется любым экземпляром определяющего класса.Реализация - это конструкция из «статического» класса в «динамический» объект (этот объект может существовать только во время работы вашей программы).Поскольку в одном классе может быть много таких объектов, созданных из одного класса, каждый из них называется instance .

Теперь, если одновременно должно быть не более одного такого окна, тогда выможно применить шаблон Singleton к вашему классу графического интерфейса.Тогда вы сможете получить доступ ко всем нестатическим методам через предоставленный статический экземпляр класса.

public class PMSGUI extends javax.swing.JFrame {
    private static final PMSGUI instance = new PMSGUI();

    private PMSGUI() {} // Restrict instantiation

    public static PMSGUI getInstance() {
        return instance;
    }

    // Add your custom methods further down here
}

Теперь, чтобы ссылаться на него в вызывающем методе, используйте

PMSGUI.getInstance().getValues(accountType, firstname, lastname, address, postcode, sex, age);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...