首页 > 解决方案 > Java JButton 和 JPanel 从数组列表中继承信息

问题描述

我正在努力完成这个项目,但我被困住了。

我总共需要 7 个类,app、student、group、ControlPanel、TopPanel、Mainframe 和 CenterPanel。我觉得这与我的超级课程有关,但我不确定。

不得将任何代码添加到应用程序、大型机或控制面板类中。

唯一允许的更改是在学生、组、顶部面板和中心面板中。

当我尝试将学生的 GPA 从 student 获取到 CenterPanel 时,我遇到了困难,我终于得到了学生的名字,但我仍然坚持,我想我必须将它添加到学生减速中。

但是,我现在陷入困境的是我创建了一个数组列表来创建一组 4 名学生,但我不知道如何在顶部面板中显示组和组平均值。

到目前为止,我有以下代码:

应用程序:

public class app {

    public static void main(String args[]) {
        MainFrame mjf = new MainFrame();
    }

}

中心面板:

import java.awt.*;
import javax.swing.*;

public class CenterPanel extends JPanel {

    JButton jb1, jb2, jb3, jb4;
    student st1 = new student("Mike", "Myers");
    student st2 = new student("Michelle","Smith");
    student st3 = new student("Meg","Smith");
    student st4 = new student("Brad","Mag");


    public CenterPanel() {

        super();
        GridLayout grid = new GridLayout(4, 1);
        setLayout(grid);
        setBackground(Color.pink);
        jb1 = new JButton(st1.getInfo());
        add(jb1);
        jb2 = new JButton(st2.getInfo());
        add(jb2);
        jb3 = new JButton(st3.getInfo());
        add(jb3);
        jb4 = new JButton(st4.getInfo());
        add(jb4);

    }

    public JButton  getJb1() {
        return jb1;
    }

    public void setJb1(JButton jb1) {
        this.jb1 = jb1;
    }

    public JButton getJb2() {
        return jb2;
    }

    public void setJb2(JButton jb2) {
        this.jb2 = jb2;
    }

    public JButton getJb3() {
        return jb3;
    }

    public void setJb3(JButton jb3) {
        this.jb3 = jb3;
    }

    public JButton getJb4() {
        return jb4;
    }

    public void setJb4(JButton jb4) {
        this.jb4 = jb4;
    }
}

学生:

import java.awt.*;
import javax.swing.*;
import javax.swing.event.EventListenerList;
import javax.swing.plaf.ComponentUI;

public class student extends JPanel {
    String firstName;
    String lastName;
    double randomGPA;

    public student(String pFirstName, String pLastName){
        firstName = pFirstName;
        lastName = pLastName;
        double gpa = Math.random();
        randomGPA = gpa * 5.0;

    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public double getRandomGPA() {
        return randomGPA;
    }

    public void setRandomGPA(double randomGPA) {
        this.randomGPA = randomGPA;
    }

        public String getInfo(){
            return firstName + " " + lastName;
        }

    public ComponentUI getUi() {
        return ui;
    }

    public void setUi(ComponentUI ui) {
        this.ui = ui;
    }

    public EventListenerList getListenerList() {
        return listenerList;
    }

    public void setListenerList(EventListenerList listenerList) {
        this.listenerList = listenerList;
    }

}

顶部面板:

import java.awt.*;
import javax.swing.*;

public class TopPanel extends JPanel {

    JButton jb1, jb2, jb3, jb4;
    group grp1 = new group("Semester 1 Students");

    public TopPanel() {

        super();
        setBackground(Color.gray);
        jb1 = new JButton();
        ImageIcon psu = new ImageIcon("images/psu.jpg");
        jb1.setIcon(psu);
        jb1.setBackground(Color.white);
        add(jb1);
        jb2 = new JButton(grp1.getGroupName());
        jb2.setBackground(Color.white);
        add(jb2);
        jb3 = new JButton("Group Average GPA is");
        jb3.setBackground(Color.white);
        add(jb3);
        jb4 = new JButton("The Groups Avg. GPA Goes Here (Extracted from the GROUP Object)");
        jb4.setBackground(Color.white);
        add(jb4);
    }
}

团体:

import java.util.*;
import java.awt.*;
import javax.swing.*;

public class group extends JPanel {

    String groupName;
    ArrayList<student> studentgrouplist;

    public group(String groupName1) {
        groupName = groupName1;
        studentgrouplist = new ArrayList<>();
    }

    public String groupList() {
        String info = "";
        for (int i = 0; i < studentgrouplist.size(); i++) {
            this.getStudentgrouplist().get(i);
            student temp = this.getStudentgrouplist().get(i);
            info = info + "\n" + temp.getFirstName() + " " + temp.getLastName() + ": " + temp.getRandomGPA();
        }
        return getGroupName() + info;
    }

    public double groupAvg() {
        double total = 0;
        for (int i = 0; i < studentgrouplist.size(); i++) {
            total = total + this.getStudentgrouplist().get(i).getRandomGPA();
        }
        return total / studentgrouplist.size();
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public ArrayList<student> getStudentgrouplist() {
        return studentgrouplist;
    }

    public void setStudentgroup(ArrayList<student> studentgrouplist) {
        this.studentgrouplist = studentgrouplist;
    }
}

控制面板:

import java.awt.*;
import javax.swing.*;

public class ControlPanel extends JPanel {

    CenterPanel cp;
    TopPanel tp1;

    public ControlPanel() {
        super();
        BorderLayout border = new BorderLayout();
        setLayout(border);
        setBackground(Color.gray);
        cp = new CenterPanel();
        tp1 = new TopPanel();
        add(tp1, "North");
        add(cp, "Center");
    }

}

主机:

import java.awt.*;
import javax.swing.*;

public class MainFrame extends JFrame {

    ControlPanel mjp;

    public MainFrame() {
        super("Assignment 05 Starter");
        mjp = new ControlPanel();
        getContentPane().add(mjp, "Center");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1200, 500);
        setVisible(true);
    }
}

标签: javaswing

解决方案


Java中的类名以小写字母开头就像写某人的名字以小写字母开头一样。:)

还要尝试了解 OOP 概念以及数据如何在类之间流动。

你可以做一些改变来得到你的结果。

中心面板

    import java.awt.*;
    import javax.swing.*;

    public class CenterPanel extends JPanel {

        JButton jb1, jb2, jb3, jb4;
        student st1 = new student("Mike", "Myers");
        student st2 = new student("Michelle","Smith");
        student st3 = new student("Meg","Smith");
        student st4 = new student("Brad","Mag");
        Group newGroup = new Group("MY GROUP");

        public CenterPanel() {

            super();
            ArrayList<student> studentList = new Arraylist<>();
            studentList.add(st1);
            studentList.add(st2);
            studentList.add(st3);
            studentList.add(st4);
            newGroup.setStudentgroup(studentList);

            GridLayout grid = new GridLayout(4, 1);
            setLayout(grid);
            setBackground(Color.pink);
            jb1 = new JButton(st1.getInfo());
            add(jb1);
            jb2 = new JButton(st2.getInfo());
            add(jb2);
            jb3 = new JButton(st3.getInfo());
            add(jb3);
            jb4 = new JButton(st4.getInfo());
            add(jb4);

        }

        public JButton  getJb1() {
            return jb1;
        }

        public void setJb1(JButton jb1) {
            this.jb1 = jb1;
        }

        public JButton getJb2() {
            return jb2;
        }

        public void setJb2(JButton jb2) {
            this.jb2 = jb2;
        }

        public JButton getJb3() {
            return jb3;
        }

        public void setJb3(JButton jb3) {
            this.jb3 = jb3;
        }

        public JButton getJb4() {
            return jb4;
        }

        public void setJb4(JButton jb4) {
            this.jb4 = jb4;
        }
    }

顶部面板

import java.awt.*;
import javax.swing.*;

public class TopPanel extends JPanel {

    JButton jb1, jb2, jb3, jb4;


    public TopPanel(group grp1) {

        super();
        setBackground(Color.gray);
        jb1 = new JButton();
        ImageIcon psu = new ImageIcon("images/psu.jpg");
        jb1.setIcon(psu);
        jb1.setBackground(Color.white);
        add(jb1);
        jb2 = new JButton(grp1.getGroupName());
        jb2.setBackground(Color.white);
        add(jb2);
        jb3 = new JButton("Group Average GPA is" + grp1.groupAvg());
        jb3.setBackground(Color.white);
        add(jb3);
        jb4 = new JButton("The Groups Avg. GPA Goes Here (Extracted from the GROUP Object)" + grp1.groupAvg());
        jb4.setBackground(Color.white);
        add(jb4);
    }
}

控制面板

import java.awt.*;
import javax.swing.*;

public class ControlPanel extends JPanel {

    CenterPanel cp;
    TopPanel tp1;

    public ControlPanel() {
        super();
        BorderLayout border = new BorderLayout();
        setLayout(border);
        setBackground(Color.gray);
        cp = new CenterPanel();
        tp1 = new TopPanel(cp.newGroup);
        add(tp1, "North");
        add(cp, "Center");
    }

}

推荐阅读