2014-03-18 21 views
0

我有一个程序在其中弹出一个窗口。在该窗口上有一个JList和一个按钮,当您单击该按钮时会弹出一个包含JTextFields的面板,另一个按钮显示“添加学生”。应该发生什么是用户在文本字段中输入信息,然后单击“添加学生”,然后该信息显示在第一个面板上的JList中。将数据提交给另一个类的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()); 
} 
} 
+0

请提供一段可编译的代码。学生课怎么样?已添加 – wumpz

+0

。 –

+0

你还没有问过问题,甚至没有说明问题。在目前的状态下,你的文章更多的是一个故事,而不是一个问题。请进行必要的修复。 –

回答

0

我不清楚你问什么了(或者,如果有你的问题,甚至问题),但似乎你的东西这样的效果后是? (这是用人的Student类如图所示)

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

} 

它没有格式化的最漂亮的(即在所有),但嘿,它增加了一个学生到列表中,并且是从另一个类(匿名内部类,但技术上仍然是另一类)。

+0

我对使用Swing(我知道,不使用Swing,我刚刚发现)自己创建的所有按钮和面板了解不多,但我想我会明白你在做什么。我的问题主要是关于1行。说这个的部分 –

+0

studentBox.setModel(模型);我如何让它能够看到列表变量“studentBox”,然后从我提供的按钮方法添加到它? –

相关问题