Отправлять данные в Jlist из другого класса

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

Вот мой код.

//This sends you to the other JPanel
private void btnAddStudentActionPerformed(java.awt.event.ActionEvent evt) { AddStudent st = new AddStudent(); st.setVisible(true);
}
//This is supposed to send the information to the JList DefaultListModel model = new DefaultListModel();
private void btnAddStudentActionPerformed(java.awt.event.ActionEvent evt) { setStudentVariables( txtFirstName.getText(), txtLastName.getText(), 12356, 3.55 ); model.addElement( getMyStudent() ); studentBox.setModel(model); //Student box is the variable name for the JList setVisible(false);
}
public static Student getMyStudent( /*String firstName, String lastName, int id, ****** gpa*/ ){ Student s = new Student(); s.setStudentFirstName( addFirstName ); s.setStudentLastName( addLastName ); s.setStudentID( addId ); s.setStudentGPA( addGpa ); System.out.println(addFirstName); return s;
}
public static void setStudentVariables( String firstName, String lastName, int id, ****** gpa ){ addFirstName = firstName; addLastName = lastName; addId = id; addGpa = gpa;
}

//Это мой ученический класс

пакетная школа;

public class Student {
String studentFirstName, studentLastName;
int studentID;
****** studentGPA;
Student(){}
public Student(String studentFirstName, String studentLastName, int studentID, ****** studentGPA) { this.studentFirstName = studentFirstName; this.studentLastName = studentLastName; this.studentID = studentID; this.studentGPA = studentGPA;
}
public void setStudentFirstName(String studentFirstName) { this.studentFirstName = studentFirstName;
}
public String getStudentFirstName() { return studentFirstName;
}
public void setStudentLastName(String studentLastName) { this.studentLastName = studentLastName;
}
public String getStudentLastName() { return studentLastName;
}
public void setStudentID(int studentID) { this.studentID = studentID;
}
public int getStudentID() { return studentID;
}
public void setStudentGPA(****** studentGPA) { this.studentGPA = studentGPA;
}
public ****** getStudentGPA() { return studentGPA;
}
public String toString() { return ("First Name:" + this.getStudentFirstName() + " Last Name " + this.getStudentLastName() + " ID: " + this.getStudentID() + " GPA: " + this.getStudentGPA());
}
}
1 ответ

Я не совсем понимаю, что вы просите (или если в вашем вопросе был даже вопрос), но, похоже, вы что-то сделали с этим? (это использует ваш класс учеников, как показано)

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class Main { public static void main(String[] args) { final JFrame frame = new JFrame("JList!"); frame.setDefaultCloseOperation(3); JPanel pane = new JPanel(new BorderLayout()); final JList<student> studentList = new JList<>(); final DefaultListModel<student> studentModel = new DefaultListModel<>(); studentList.setModel(studentModel); pane.add(new JScrollPane(studentList), "Center"); pane.add(new JButton(new AbstractAction("Add student") { @Override public void actionPerformed(ActionEvent arg0) { JPanel pane = new JPanel(new GridLayout(0,2)); pane.add(new JLabel("First name:", JLabel.RIGHT)); JTextField fname = new JTextField(); pane.add(fname); pane.add(new JLabel("Last name:", JLabel.RIGHT)); JTextField lname = new JTextField(); pane.add(lname); pane.add(new JLabel("ID:", JLabel.RIGHT)); JTextField sid = new JTextField(); pane.add(sid); pane.add(new JLabel("GPA:", JLabel.RIGHT)); JTextField gpa = new JTextField(); pane.add(gpa); int result = JOptionPane.showOptionDialog(null, pane, "Add Student", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); if(result == JOptionPane.OK_OPTION){ studentModel.addElement(new Student(fname.getText(), lname.getText(), Integer.parseInt(sid.getText()), ******.parse******(gpa.getText()))); studentList.updateUI(); } } }), "South"); frame.setContentPane(pane); frame.setSize(400, 300); frame.setVisible(true); }
}
</student></student>

Он не отформатирован самым красивым (то есть вообще), но эй, он добавляет ученика в список и относится к другому классу (анонимный внутренний класс, но еще один класс технически).

licensed under cc by-sa 3.0 with attribution.