📄 reportgenerator.java
字号:
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;
import java.lang.*;
import java.io.*;
/**
* @author Ran Zhao
* @version 09/03/2007
*/
public class ReportGenerator implements ActionListener
{
private static ReportGenerator singleton;
private JFrame frame;
private JLabel rlabel;
private JLabel vlabel;
private JButton ButtonExit;
private JComboBox sortCombo;
private JTable table;
private JScrollPane scrollPane;
private ArrayList<User> u = new ArrayList<User>();
private String[] sortName = {"Name", "Level", "Time", "Collisions"};
private String[] columnNames = {"Name", "Level", "Time", "Collisions"};
private String[][] data;
public ReportGenerator()
{
singleton = this;
for(User a : User.getUsers())
{
u.add(a);
}
setArray(u);
frame = new JFrame("Report Generator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
Container contentPane = frame.getContentPane();
SpringLayout layout = new SpringLayout();
contentPane.setLayout(layout);
rlabel = new JLabel("Report Generator");
rlabel.setFont(new Font(null,Font.BOLD,32));
vlabel = new JLabel("Sort By");
ButtonExit = new JButton(" Menu ");
sortCombo = new JComboBox(sortName);
sortCombo.setMaximumRowCount(3);
MyTable mt=new MyTable('O');
table = new JTable(mt);
scrollPane = new JScrollPane(table);
table.setPreferredScrollableViewportSize(new Dimension(740, 280));
contentPane.add(rlabel);
contentPane.add(vlabel);
contentPane.add(ButtonExit);
contentPane.add(sortCombo);
contentPane.add(scrollPane);
layout.putConstraint(SpringLayout.WEST, rlabel,
300,
SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.NORTH, rlabel,
30,
SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.WEST, vlabel,
100,
SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.SOUTH, vlabel,
110,
SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.WEST, sortCombo,
60,
SpringLayout.WEST, vlabel);
layout.putConstraint(SpringLayout.SOUTH, sortCombo,
115,
SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.WEST, scrollPane,
30,
SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.NORTH, scrollPane,
40,
SpringLayout.NORTH, sortCombo);
layout.putConstraint(SpringLayout.EAST, ButtonExit,
-50,
SpringLayout.EAST, contentPane);
layout.putConstraint(SpringLayout.NORTH, ButtonExit,
500,
SpringLayout.NORTH, contentPane);
sortCombo.addActionListener(this);
ButtonExit.addActionListener(this);
table.setEnabled(false);
makeVisible();
}
public void makeVisible()
{
frame.setVisible(true);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
}
public static void show()
{
if (!(singleton == null)) { singleton.makeVisible(); } else { new ReportGenerator(); }
}
public void setArray(ArrayList<User> user)
{
int n = 0;
for(int i=0; i<user.size(); i++)
for(int j=0; j<user.get(i).result.size(); j++)
{
n++;
}
data = new String[n][4];
int count = 0;
for(int i=0; i<user.size(); i++)
for(int j=0; j<user.get(i).result.size(); j++)
{
data[count][0] = user.get(i).toString();
data[count][1] = u.get(i).result.get(j).getMyLevel().getName();
data[count][2] = Integer.toString(u.get(i).result.get(j).getTime()/100);
data[count][3] = Integer.toString(u.get(i).result.get(j).getFailure());
count++;
}
}
public void actionPerformed (ActionEvent e)
{
if (e.getSource().equals(ButtonExit))
{
AdmMenu.show(); frame.setVisible(false);
}
else
{
JComboBox cb = (JComboBox)e.getSource();
String sName = (String)cb.getSelectedItem();
if (sName == "Name") { table.setModel(new MyTable('N'));}
if (sName == "Level") { table.setModel(new MyTable('L'));}
if (sName == "Time") { table.setModel(new MyTable('T'));}
if (sName == "Collisions") { table.setModel(new MyTable('F'));}
}
}
public void sorting(char method)
{
switch (method)
{
case 'N': for(int j=0; j<data.length; j++)
for(int k=0; k<data.length - 1; k++)
{
String temp;
if ( data[k][0].compareTo(data[k+1][0]) > 0)
{
for(int i=0; i<data[k].length; i++)
{
temp = data[k][i];
data[k][i] = data[k+1][i];
data[k+1][i] = temp;
}
}
}
//System.out.println(data[0][0]);
break;
case 'L': for(int j=0; j<data.length; j++)
for(int k=0; k<data.length - 1; k++)
{
String temp;
if ( data[k][1].compareTo(data[k+1][1]) > 0)
{
for(int i=0; i<data[k].length; i++)
{
temp = data[k][i];
data[k][i] = data[k+1][i];
data[k+1][i] = temp;
}
}
}
//System.out.println(data[0][0]);
break;
case 'T': for(int j=0; j<data.length; j++)
for(int k=0; k<data.length - 1; k++)
{
String temp;
if ( data[k][2].compareTo(data[k+1][2]) > 0)
{
for(int i=0; i<data[k].length; i++)
{
temp = data[k][i];
data[k][i] = data[k+1][i];
data[k+1][i] = temp;
}
}
}
//System.out.println(data[0][0]);
break;
case 'F': for(int j=0; j<data.length; j++)
for(int k=0; k<data.length - 1; k++)
{
String temp;
if ( data[k][3].compareTo(data[k+1][3]) > 0)
{
for(int i=0; i<data[k].length; i++)
{
temp = data[k][i];
data[k][i] = data[k+1][i];
data[k+1][i] = temp;
}
}
}
//System.out.println(data[0][0]);
break;
default : System.out.println("Invalid operation");
}
}
class MyTable extends AbstractTableModel
{
//void MyTable(){}
char model;
MyTable(char m)
{
model = m;
}
public int getColumnCount()
{
return columnNames.length;
}
public int getRowCount()
{
if (model == 'O')
{
return data.length;
}
else
{
sorting(model);
return data.length;
}
}
public String getColumnName(int col)
{
return columnNames[col];
}
public Object getValueAt(int row, int col)
{
if (model == 'O')
{
return data[row][col];
}
else
{
sorting(model);
return data[row][col];
}
}
public Class getColumnClass(int c)
{
return getValueAt(0, c).getClass();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -