簡體   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