Отправлять данные в 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.