Java 如何从JTable在新窗口中填充JTextFields
我用JTable创建了一个窗口,其中包含一些用户文本文件中的值。 此外,还有用于创建、编辑和删除用户的按钮。 我想为创建和编辑按钮使用并打开同一个窗口,但如果单击编辑按钮,则窗口应填充来自JTable的higlight(clicked)user值Java 如何从JTable在新窗口中填充JTextFields,java,swing,jtable,Java,Swing,Jtable,我用JTable创建了一个窗口,其中包含一些用户文本文件中的值。 此外,还有用于创建、编辑和删除用户的按钮。 我想为创建和编辑按钮使用并打开同一个窗口,但如果单击编辑按钮,则窗口应填充来自JTable的higlight(clicked)user值 //PatientWindow.java private void initActions() { btnCreate.addActionListener(new ActionListener() { @Ov
//PatientWindow.java
private void initActions() {
btnCreate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
CreateEditPatientWindow createEditPatientWindow = new CreateEditPatientWindow();
createEditPatientWindow.setVisible(true);
}
});
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);
//PatientModel patientModel = patient;
//patientModel.setUsername(username);
CreateEditPatientWindow createEditPatientWindow = new CreateEditPatientWindow(USE VALUES OF SELECTED USER);
createEditPatientWindow.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(null, "User not found", "Info", JOptionPane.ERROR_MESSAGE);
}
}
}
});
}
private void initGUI() {
tbToolBar = new JToolBar();
btnCreate = new JButton("Create");
btnUpdate = new JButton("Update");
btnDelete = new JButton("Delete");
tbToolBar.add(btnCreate);
tbToolBar.add(btnUpdate);
tbToolBar.add(btnDelete);
spScroll = new JScrollPane();
ArrayList<PatientModel> patientsList = UsersClass.getPatients();
String[] header = new String[] {
"Name",
"Lastname",
"UMCN",
"Gender",
"Adress",
"Phone number",
"Username",
"Password",
//"User type",
"Insurance number",
"Insurance category",
"Expiry date"};
Object[][] body = new Object[patientsList.size()][header.length];
int a = 0;
for(int i = 0; i < patientsList.size(); i++)
{
PatientModel patientsData = patientsList.get(i);
body[i][0] = patientsData.getName();
body[i][1] = patientsData.getLastname();
body[i][2] = patientsData.getUmcn();
body[i][3] = patientsData.getGender();
body[i][4] = patientsData.getAdress();
body[i][5] = patientsData.getPhoneNumber();
body[i][6] = patientsData.getUsername();
body[i][7] = patientsData.getPassword();
//body[i][8] = patientsData.getUserType();
body[i][8] = patientsData.getHealthInsuranceNumber();
body[i][9] = patientsData.getInsuranceCategory();
body[i][10] = patientsData.getExpiryDate();
}
DefaultTableModel tableModel = new DefaultTableModel(body,header);
tblPatients = new JTable(tableModel);
//tblPatients.setRowSelectionAllowed(true);
//tblPatients.setColumnSelectionAllowed(true);
//tblPatients.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tblPatients.setDefaultEditor(Object.class, null);
JScrollPane tableScroll = new JScrollPane(tblPatients);
add(spScroll);
add(tbToolBar, BorderLayout.NORTH);
add(tableScroll, BorderLayout.CENTER);
}
//CreateEditPatientWindow.java
private void initGUI() {
MigLayout mig = new MigLayout("wrap 2", "[][]", "[]10[][]10[]");
setLayout(mig);
lblName = new JLabel("Name");
txtName = new JTextField(20);
lblLastname = new JLabel("Lastname");
txtLastname = new JTextField(20);
lblUMCN = new JLabel("Unique Master Citizen Number");
txtUMCN = new JTextField(20);
lblGender = new JLabel("Gender");
cbGender = new JComboBox();
cbGender.addItem("Male");
cbGender.addItem("Female");
lblAdress = new JLabel("Adress");
txtAdress = new JTextField(20);
lblPhoneNumber = new JLabel("Phone number");
txtPhoneNumber = new JTextField(20);
lblUsername = new JLabel("Username");
txtUsername = new JTextField(20);
lblPassword = new JLabel("Password");
txtPassword = new JTextField(20);
lblHealthInsuranceNumber = new JLabel("Health insurance number");
txtHealthInsuranceNumber = new JTextField(20);
lblExpiryDate = new JLabel("Expiry date");
txtExpiryDate = new JTextField(20);
lblInsuranceCategory = new JLabel("Insurance category");
cbInsuranceCategory = new JComboBox();
cbInsuranceCategory.addItem("1");
cbInsuranceCategory.addItem("2");
cbInsuranceCategory.addItem("3");
btnConfirm = new JButton("Confirm");
add(lblName);
add(txtName);
add(lblLastname);
add(txtLastname);
add(lblUMCN);
add(txtUMCN);
add(lblGender);
add(cbGender);
add(lblAdress);
add(txtAdress);
add(lblPhoneNumber);
add(txtPhoneNumber);
add(lblUsername);
add(txtUsername);
add(lblPassword);
add(txtPassword);
add(lblHealthInsuranceNumber);
add(txtHealthInsuranceNumber);
add(lblExpiryDate);
add(txtExpiryDate);
add(lblInsuranceCategory);
add(cbInsuranceCategory);
add(btnConfirm);
}
//PatientWindow.java
私有void initActions(){
btnCreate.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
CreateEditPatientTwinDow CreateEditPatientTwinDow=新建CreateEditPatientTwinDow();
CreateEditTwinDow.setVisible(true);
}
});
btnUpdate.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
int row=tblPatients.getSelectedRow();
如果(行==-1)
{
JOptionPane.showMessageDialog(null,“您必须选择要更新的行”,“信息”,JOptionPane.WARNING\u消息);
}
其他的
{
DefaultTableModel=(DefaultTableModel)tblPatients.getModel();
字符串username=model.getValueAt(第6行).toString();
UserModel userSearch=UsersClass.findUser(用户名);
if(userSearch!=null)
{
//System.out.println(“用户找到!!!”+用户名);
//PatientModel PatientModel=患者;
//patientModel.setUsername(用户名);
CreateEditPatientTwinDow CreateEditPatientTwinDow=新建CreateEditPatientTwinDow(使用所选用户的值);
CreateEditTwinDow.setVisible(true);
}
其他的
{
JOptionPane.showMessageDialog(null,“未找到用户”,“信息”,JOptionPane.ERROR\u消息);
}
}
}
});
}
私有void initGUI(){
tbToolBar=新的JToolBar();
btnCreate=newjbutton(“创建”);
btnUpdate=新的JButton(“更新”);
btnDelete=新的JButton(“删除”);
tbToolBar.add(btnCreate);
tbToolBar.add(btnUpdate);
tbToolBar.add(btnDelete);
spScroll=新的JScrollPane();
ArrayList patientsList=UsersClass.getPatients();
字符串[]头=新字符串[]{
“姓名”,
“姓氏”,
“UMCN”,
“性别”,
“地址”,
“电话号码”,
“用户名”,
“密码”,
//“用户类型”,
“保险编号”,
“保险类别”,
“有效期”};
Object[][]body=新对象[patientsList.size()][header.length];
int a=0;
对于(int i=0;ipublic class UsersClass {
public static ArrayList<UserModel> users = getUsers();
public static ArrayList<PatientModel> patients = getPatients();
public static ArrayList<UserModel> getUsers()
{
ArrayList<UserModel> usersList = new ArrayList<UserModel>();
ArrayList<PatientModel> patientsList = getPatients();
ArrayList<NurseModel> nursesList = getNurses();
ArrayList<DoctorModel> doctorsList = getDoctors();
usersList.addAll(patientsList);
usersList.addAll(nursesList);
usersList.addAll(doctorsList);
return usersList;
}
public static ArrayList<PatientModel> getPatients()
{
ArrayList<PatientModel> patientsList = new ArrayList<PatientModel>();
try
{
File patientTextFile = new File("src/txt/patients");
BufferedReader br = new BufferedReader(new FileReader(patientTextFile));
String line = null;
while((line = br.readLine()) != null)
{
String[] split = line.split("\\|");
String name = split[0];
String lastname = split[1];
String umcn = split[2];
String gender = split[3];
String adress = split[4];
String phoneNumber = split[5];
String username = split[6];
String password = split[7];
String userType = split[8];
int healthInsuranceNumber = Integer.parseInt(split[9]);
String expiryDate = split[10];
int insuranceCategory = Integer.parseInt(split[11]);
PatientModel newPatient = new PatientModel(
name,
lastname,
umcn,
gender,
adress,
phoneNumber,
username,
password,
userType,
healthInsuranceNumber,
expiryDate,
insuranceCategory);
patientsList.add(newPatient);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return patientsList;
}
public static ArrayList<NurseModel> getNurses()
{
ArrayList<NurseModel> nursesList = new ArrayList<NurseModel>();
try
{
File nurseTextFile = new File("src/txt/nurses");
BufferedReader br = new BufferedReader(new FileReader(nurseTextFile));
String line = null;
while((line = br.readLine()) != null)
{
String[] split = line.split("\\|");
String name = split[0];
String lastname = split[1];
String umcn = split[2];
String gender = split[3];
String adress = split[4];
String phoneNumber = split[5];
String username = split[6];
String password = split[7];
String userType = split[8];
double salary = Double.parseDouble(split[9]);
String service = split[10];
NurseModel newNurse = new NurseModel(
name,
lastname,
umcn,
gender,
adress,
phoneNumber,
username,
password,
userType,
salary,
service);
nursesList.add(newNurse);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return nursesList;
}
public static ArrayList<DoctorModel> getDoctors()
{
ArrayList<DoctorModel> doctorsList = new ArrayList<DoctorModel>();
try
{
File doctorTextFile = new File("src/txt/doctors");
BufferedReader br = new BufferedReader(new FileReader(doctorTextFile));
String line = null;
while((line = br.readLine()) != null)
{
String[] split = line.split("\\|");
String name = split[0];
String lastname = split[1];
String umcn = split[2];
String gender = split[3];
String adress = split[4];
String phoneNumber = split[5];
String username = split[6];
String password = split[7];
String userType = split[8];
double salary = Double.parseDouble(split[9]);
String specialization = split[10];
String service = split[11];
DoctorModel newDoctor = new DoctorModel(
name,
lastname,
umcn,
gender,
adress,
phoneNumber,
username,
password,
userType,
salary,
specialization,
service);
doctorsList.add(newDoctor);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return doctorsList;
}
public static UserModel findUser(String username)
{
for(UserModel user : users)
{
if(user.getUsername().equals(username))
{
return user;
}
}
return null;
}
}