繁体   English   中英

从另一个类向Jlist提交数据

[英]submit data to a Jlist from another class

我有一个程序,其中一个窗口弹出。 在该窗口上是一个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, double 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, double gpa ){
    addFirstName = firstName;
    addLastName = lastName;
    addId = id;
    addGpa = gpa;
}

//这是我的学生班

套餐学校;

public class Student {

String studentFirstName, studentLastName;
int studentID;
double studentGPA;

Student(){}

public Student(String studentFirstName, String studentLastName, int studentID, double 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(double studentGPA) {
    this.studentGPA = studentGPA;
}

public double getStudentGPA() {
    return studentGPA;
}  

public String toString() {
    return ("First Name:" + this.getStudentFirstName() +
                " Last Name " + this.getStudentLastName() +
                " ID: " + this.getStudentID() +
                " GPA: " + this.getStudentGPA());
}
}

我不清楚您要问的是什么(或者您的问题中是否有一个问题),但似乎您正在追求某种效果? (这正在使用您的学生班,如图所示)

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()), Double.parseDouble(gpa.getText())));
                        studentList.updateUI();
                    }
                }
            }), "South");
            frame.setContentPane(pane);
            frame.setSize(400, 300);
            frame.setVisible(true);
    }

}

它没有格式化最漂亮的(即完全没有格式化),但是,嘿,它向列表中添加了一个Student,并且来自另一个类(匿名的内部类,但从技术上讲还是另一个类)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM