首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java JButton和JPanel从数组列表继承信息

Java JButton和JPanel从数组列表继承信息
EN

Stack Overflow用户
提问于 2018-09-24 09:19:03
回答 1查看 75关注 0票数 2

我试图完成这个项目,但我被卡住了。

我需要7类,应用程序,学生,组,ControlPanel,TopPanel,大型机和CenterPanel。我觉得这跟我的超级班级有关,但我不确定。

不能将任何代码添加到app、mainframe或controlpanel类中。

仅允许在student、group、toppanel和centerpanel中进行更改。

当我试图把学生的平均绩点从学生到CenterPanel的时候,我被卡住了,我最终得到了学生的名字,但我仍然被卡住了,我想我必须把它加到学生减速中。

然而,我现在遇到的问题是,我创建了一个数组列表来创建一个包含4个学生的组,但我不知道如何在toppanel中显示组和组平均。

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

应用程序:

代码语言:javascript
复制
public class app {

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

}

CenterPanel:

代码语言:javascript
复制
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;
    }
}

学生:

代码语言:javascript
复制
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;
    }

}

TopPanel:

代码语言:javascript
复制
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);
    }
}

组:

代码语言:javascript
复制
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;
    }
}

ControlPanel:

代码语言:javascript
复制
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");
    }

}

大型机:

代码语言:javascript
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-09-25 01:17:13

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

还要尝试理解OOP概念和数据如何在类之间流动。

您可以做一些更改来获得您的结果。

CenterPanel

代码语言:javascript
复制
    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;
        }
    }

TopPanel

代码语言:javascript
复制
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);
    }
}

ControlPanel

代码语言:javascript
复制
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");
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52471662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档