java - 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);
}
}
解决方案
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");
}
}
推荐阅读
- c++ - 字符串 v 等于左右旋转
- raspberry-pi4 - 如何在 Raspberry Pi/Windows 10 中查找和输入域名?
- sql - SQL Query 对单独查询的结果进行分类
- git - 从一组存储库创建单个存储库
- python - 如何从字典python中的while循环更新值(列表形式)
- java - 离开活动时如何停止我的应用程序的振动?
- javascript - React - 从子组件更新状态不起作用
- python - 如何在 Pyscripter 中打印熊猫数据框的表格?
- javascript - javascript中带有自定义菜单列表下划线的导航栏
- html - 将 html FlameGraph 嵌入到 Azure wiki