Как заполнить Textfields выбранными значениями из JTable в другом окне? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть два окна: PatientWindow и CreateEditPatientWindow.В PatientWindow у меня есть JTable, который заполняется из текстовых файлов.Кроме того, на PatientWindow у меня есть кнопка «Обновить», которая открывает CreateEditPatientWindow.Поэтому я хочу заполнить TextFields в CreateEditPatientWindow данными выбранного элемента из таблицы в PatientWindow.

Здесь я обновляю слушателя кнопки.Здесь мне удалось вывести в строку правильное имя пользователя выбранного пользователя в таблице:

btnUpdate.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int row = tblPatients.getSelectedRow();
                if(row == -1)
                {
                    JOptionPane.showMessageDialog(null, "You must select row for update", "Info", JOptionPane.WARNING_MESSAGE);
                }
                else 
                {
                    DefaultTableModel model = (DefaultTableModel)tblPatients.getModel();
                    String username = model.getValueAt(row, 6).toString();
                    UserModel userSearch = UsersClass.findUser(username);                   


                    if(userSearch != null)
                    {

                        System.out.println("USER FOUND!!!" + username);


                        CreateEditPatientWindow createEditPatientWindow = new CreateEditPatientWindow();
                        createEditPatientWindow.setVisible(true);
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "User not found", "Info", JOptionPane.ERROR_MESSAGE);
                    }
                }
            }
        });

Так что в CreateEditPatientWindow одним из TextFields является txtUsername.

lblUsername = new JLabel("Username");
txtUsername = new JTextField(20);
// txtUsername.setText(USERNAME VALUE FROM PatientWindow)

1 Ответ

0 голосов
/ 22 июня 2019

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

Пример:

InputPatientWindow.java

Class InputPatientWindow{
 private String userName;
 Private String lastName;
 private String namem;
 private String password;

 public void setUserName(String userName){
   this.userName = userName;
 }
 public String getUserName(){
  return userName;
 }

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

 public void setNamem(String namem){
   this.namem= namem;
 }
 public String getNamem(){
  return namem;
 }

 public void setPassword(String password){
   this.password= password;
 }
 public String getPassword(){
  return password;
 }
}

Теперь вы можете использовать этот класс Model для хранения ваших значений,

PatientWindow

btnUpdate.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int row = tblPatients.getSelectedRow();
                if(row == -1)
                {
                    JOptionPane.showMessageDialog(null, "You must select row for update", "Info", JOptionPane.WARNING_MESSAGE);
                }
                else 
                {
                    DefaultTableModel model = (DefaultTableModel)tblPatients.getModel();
                    String username = model.getValueAt(row, 6).toString();
                    UserModel userSearch = UsersClass.findUser(username);                   


                    if(userSearch != null)
                    {

                        System.out.println("USER FOUND!!!" + username);
                        InputPatientWindow ipw = new InputPatientWindow();
                        ipw.setUserName(username);
                        /*In same way set all further parameters you want in Create Edit PatientWindow*/
                        /*pass the data through constructor*/
                        CreateEditPatientWindow createEditPatientWindow = new CreateEditPatientWindow(ipw);


                        createEditPatientWindow.setVisible(true);
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "User not found", "Info", JOptionPane.ERROR_MESSAGE);
                    }
                }
            }
        });

CreateEditPatientWindow.java

/*Write your code and add the constructor*/

public InputPatientWindow  ipw = new InputPatientWindow();

CreateEditPatientWindow(InputPatientWindow ipw){
 this.ipw = ipw;
}

//And now you can access your values from ipw by using below methods.
`ipw.getUserName();`
...