📄 gui.java
字号:
import java.awt.*;
import java.awt.event.*;
//import java.awt.image.ImageObserver;
import javax.swing.*;
//import javax.swing.event.*;
//import javax.swing.border.*;
import java.util.*;
//import java.text.*;
public class GUI extends JFrame{
public GUI(){
super("成绩统计");
Toolkit kit =Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int x=(screenSize.width-600)/2;
int y=(screenSize.height-400)/2;
setLocation(x,y);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buildclass();
Container pane=getContentPane();
initInput();
initDraw();
initWest();
pane.setLayout(new BorderLayout());
pane.add(InputArea,BorderLayout.NORTH);
pane.add(DrawArea,BorderLayout.WEST);
pane.add(WestArea,BorderLayout.CENTER);
//pane.setPreferredSize(new Dimension(600,600));
setVisible(true);
pack();
}
///////////////////////////////////////////////////////////////////////////输入区
private void initInput(){
InputArea=new JPanel();
InputArea.setLayout(new FlowLayout());
JLabel nameare=new JLabel("姓名");
InputArea.add(nameare);
name=new JTextField(5);
InputArea.add(name);
JLabel IDare=new JLabel("学号");
InputArea.add(IDare);
ID=new JTextField(5);
InputArea.add(ID);
JLabel gradearea=new JLabel("成绩");
InputArea.add(gradearea);
grade=new JTextField(5);
InputArea.add(grade);
JLabel carea=new JLabel("班别");
InputArea.add(carea);
String[] arv=new String[classes.length];
for(int i=0;i<classes.length;i++)
arv[i]=String.valueOf(i+1);
c=new JComboBox(arv);
Select I=new Select();
c.addItemListener(I);
InputArea.add(c);
JButton b=new JButton("输入");
ButtonAct e=new ButtonAct();
b.addActionListener(e);
InputArea.add(b);
}
//////////////////////////////////////////////////////////////////////输出区
private void initDraw(){
DrawArea=new JPanel();
// Container c=DrawArea.getC;
DrawArea.setBackground(Color.white);
DrawArea.setPreferredSize(new Dimension(300,300));
DrawArea.setLayout(new BoxLayout(DrawArea,BoxLayout.Y_AXIS));
//JScrollPane Scroll=new JScrollPane();
// DrawArea.add(Scroll);
}
private void DrawData(Classes classes ){
JLabel[] drawD=new JLabel[classes.getSize()];
JLabel top=new JLabel("最高分:"+String.valueOf(classes.getMax().getGrade())+",最低分:"+String.valueOf(classes.getMin().getGrade())+",平均分"+String.valueOf(classes.getAvg()));
JLabel to=new JLabel("姓 名 学 号 分 数");
DrawArea.add(top);
DrawArea.add(to);
for (int i=0;i<drawD.length;i++){
int n=drawD.length-1-i;
drawD[i]=new JLabel(classes.get(n).getName()+" "+classes.get(n).getID()+" "+String.valueOf(classes.get(n).getGrade()));
DrawArea.add(drawD[i]);
setVisible(true);
}
}
///////////////////////////////////////////////////////////////////////////////监听器区
private class ButtonAct implements ActionListener {
public void actionPerformed(ActionEvent e){
int i=Integer.parseInt(c.getSelectedItem().toString());
float g=Float.valueOf(grade.getText());
int d=Integer.parseInt(ID.getText());
String n=name.getText();
classes[i-1].add(new student(d,g,n));
DrawArea.removeAll();
DrawData(classes[i-1]);
draw(classes[i-1],WestArea);
}
}
private class Select implements ItemListener {
public void itemStateChanged(ItemEvent e)
{
if(e.getStateChange() == ItemEvent.SELECTED)//当JComboBox选项发生改变时
{
int i=Integer.parseInt(c.getSelectedItem().toString());
DrawArea.removeAll();
DrawArea.repaint();
if(classes[i-1].getSize()!=0)
DrawData(classes[i-1]);
draw(classes[i-1],WestArea);
}
}
}
//////////////////////////////////////////////绘图区
private void initWest(){
WestArea=new DrawPanel();
// WestArea.setPreferredSize(new Dimension(400,300));
//WestArea.setVisible(true);
JLabel eLabel=new JLabel("优秀(100-90)");
JLabel gLabel=new JLabel("良好(89-80)");
JLabel cLabel= new JLabel("中等(79-60)");
JLabel bLabel=new JLabel("不及格(60以下)");
eLabel.setForeground(Color.RED);
gLabel.setForeground(Color.YELLOW);
cLabel.setForeground(Color.BLUE);
bLabel.setForeground(Color.BLACK);
WestArea.add(eLabel);
WestArea.add(gLabel);
WestArea.add(cLabel);
WestArea.add(bLabel);
}
private void draw(Classes clas,DrawPanel d){
d.eEnd=Math.round(clas.getGood()*360);
d.gEnd=Math.round(clas.getExc()*360);
d.cEnd=Math.round(clas.getMid()*360);
d.repaint();
}
//////////////////////////////////////////////////////////////////////////////创建班队列
private void buildclass(){
String inputValue = JOptionPane.showInputDialog("总共有多少个班?");
int j=Integer.parseInt(inputValue);
classes=new Classes[j];
for(int i=0;i<classes.length;i++)
classes[i]=new Classes();
}
private JPanel InputArea,DrawArea;
private JTextField name,grade,ID;
private JComboBox c;
private Classes[] classes;
private DrawPanel WestArea;
}
/////////////////////////////////////////////////////////
class DrawPanel extends JPanel{
/** Creates a new instance of DrawPanel */
public DrawPanel() {
eEnd=0;
gEnd=0;
cEnd=0;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);//优秀红色
g.fillArc(x,y,d,d,0,eEnd);
g.setColor(Color.YELLOW);//良好黄色
g.fillArc(x,y,d,d,eEnd,gEnd);
g.setColor(Color.BLUE);//中等蓝色
g.fillArc(x,y,d,d,gEnd+eEnd,cEnd);
g.setColor(Color.BLACK);//不及格黑色
g.fillArc(x,y,d,d,eEnd+gEnd+cEnd,360-eEnd-gEnd-cEnd);
}
int x=100;
int y=60;
int d=180;
int eEnd,gEnd,cEnd;
}
class test{
public static void main(String args[]){
new GUI();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -