简体   繁体   English

从另一个类向Jlist提交数据

[英]submit data to a Jlist from another class

I have a program where a window pops up. 我有一个程序,其中一个窗口弹出。 On that window is a JList and a button that says "add student" when you click that button another panel pops up that has JTextFields , and another button that says "add student." 在该窗口上是一个JList和一个单击“添加学生”的按钮,当您单击该按钮时,将弹出另一个面板,该面板具有JTextFields ,另一个按钮是“添加学生”。 Whats supposed to happen is the user enters information into the text fields then clicks "add student" then that info is shown in the JList on the 1st panel. 应该发生的情况是,用户在文本字段中输入信息,然后单击“添加学生”,然后该信息显示在第一个面板的JList

Heres my code. 这是我的代码。

//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;
}

//This is my student class //这是我的学生班

package school; 套餐学校;

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());
}
}

I'm unclear exactly what you're asking for (or if there was even a question in your question), but it seems you're after something to this effect? 我不清楚您要问的是什么(或者您的问题中是否有一个问题),但似乎您正在追求某种效果? (this is employing your Student class as shown) (这正在使用您的学生班,如图所示)

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);
    }

}

It ain't formatted the prettiest (ie at all), but hey, it adds a Student to the list, and is from another class (an anonymous inner class, but still another class technically). 它没有格式化最漂亮的(即完全没有格式化),但是,嘿,它向列表中添加了一个Student,并且来自另一个类(匿名的内部类,但从技术上讲还是另一个类)。

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

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