不经意间今天已经是星期四了,明天早上骑士和勇士也将迎来第六战,依然是骑士的生死战。博古特的报销成为了X因素之一。我觉得骑士还是有机会赢。
今天我开始完成自己的另一个模块——员工管理模块,因为有了仓库管理模块的先例,这个员工信息子块在今天上午还是成功完成了。对员工信息的增删查。哎呀,在这里说时突然才想到,本来一开始有加员工照片的准备啊~!
这次的界面布局和仓库管理有不一样的地方,大家可以看看。
public class employMainUI extends JPanel{
JLabel ca1 = null;
JScrollPane jsp;
JLabel searchInfo;
JTextField inputsearch;
JButton btnAdd,btnSearch,btnDel;
private static employees em=new employees();
List<employees> emlist=new employSrv().FetchAll();
JFrame jf=new JFrame();
public employMainUI(){
initContent();
}
private void initContent() {
Rectangle rect = this.getBounds();
jsp = new JScrollPane();
jsp.setBounds(0, 40, rect.width, rect.height - 90);
this.add(jsp);
searchInfo = new JLabel("请输入员工证件号:", JLabel.RIGHT);
searchInfo.setBounds(60, rect.height - 45, 150, 30);
this.add(searchInfo);
inputsearch = new JTextField(10);
inputsearch.setBounds(220, rect.height - 45, 200, 30);
this.add(inputsearch);
btnSearch=new JButton("查找");
btnSearch.setBounds(rect.width - 220, rect.height - 45, 60, 30);
btnSearch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
SearchClick(emlist);
}
});
this.add(btnSearch);
btnAdd=new JButton("添加");
btnAdd.setBounds(440, rect.height - 45, 60, 30);
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jf.dispose();
AddClick();
}
});
this.add(btnAdd);
btnDel=new JButton("删除");
btnDel.setBounds(rect.width - 150, rect.height - 45, 60, 30);
this.add(btnDel);
btnDel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DeleteClick();
}
});
this.add(showForm());
jf.add(this);
jf.setSize(1024, 700);
jf.setVisible(true);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JScrollPane showForm() {
employeesTable emt =new employeesTable(em);
Object[] in = { "姓名", "证件号", "性别", "出生日期","家庭地址","练习方式","职位"};
List<employees> stuList =new employSrv().FetchAll();
jsp=emt.createTable(jsp, in, stuList);
return jsp;
}
public void SearchClick(List<employees> e){
JFrame search=new JFrame();
JLabel name,id,sex,birth,address,telephone,role;
JTextField name1,id1,sex1,birth1,address1,telephone1,role1;
search.setLayout(new GridLayout(7,2,5,5));
name=new JLabel("员工姓名");
name.setFont(new Font("宋体", Font.BOLD, 33));
name1=new JTextField(10);
search.add(name);
search.add(name1);
id=new JLabel("证件号");
id.setFont(new Font("宋体", Font.BOLD, 33));
id1=new JTextField(10);
search.add(id);
search.add(id1);
sex=new JLabel("性别");
sex.setFont(new Font("宋体", Font.BOLD, 33));
sex1=new JTextField(10);
search.add(sex);
search.add(sex1);
birth=new JLabel("员工生日");
birth.setFont(new Font("宋体", Font.BOLD, 33));
birth1=new JTextField(10);
search.add(birth);
search.add(birth1);
address=new JLabel("家庭住址");
address.setFont(new Font("宋体", Font.BOLD, 33));
address1=new JTextField(10);
search.add(address);
search.add(address1);
telephone=new JLabel("联系方式");
telephone.setFont(new Font("宋体", Font.BOLD, 33));
telephone1=new JTextField(10);
search.add(telephone);
search.add(telephone1);
role=new JLabel("职位");
role.setFont(new Font("宋体", Font.BOLD, 33));
role1=new JTextField(10);
search.add(role);
search.add(role1);
search.setLocationRelativeTo(null);
search.setSize(500, 400);
Iterator<employees> itr = e.iterator();
while (itr.hasNext()) {
employees stu = itr.next();
if (!inputsearch.getText().equals("") && inputsearch.getText().equals(stu.getId())){
name1.setText(stu.getName());
id1.setText(stu.getId());
sex1.setText(stu.getSex());
birth1.setText(stu.getBirth());
address1.setText(stu.getAddress());
telephone1.setText(stu.getTelephone());
role1.setText(stu.getRole());
search.setVisible(true);
break;
}
else
search.dispose();
}
}
public void AddClick() {
employeesAdd as=new employeesAdd();
as.toFront();
as.setSize(500, 400);
as.setLocationRelativeTo(null);
as.setVisible(true);
}
public void DeleteClick() {
int confirm = JOptionPane.showConfirmDialog(null, "确认删除所选?", "删除", JOptionPane.YES_NO_OPTION);
if (confirm == JOptionPane.YES_OPTION) {
employSrv shSrv = new employSrv();
shSrv.delete(em.getId());
}
else
System.out.println("No choice");
this.removeAll();
this.add(searchInfo);
this.add(inputsearch);
this.add(btnSearch);
this.add(btnAdd);
this.add(btnDel);
this.add(showForm());
this.updateUI();
}
public static void main(String a[]){
employMainUI zy=new employMainUI();
zy.setVisible(true);
}
}
class employeesTable{
private employees sh=new employees();
private JTable jt = null;
public employeesTable(employees sh) {
this.sh = sh;
}
// 创建JTable
public JScrollPane createTable(JScrollPane jpjs, Object[] columnNames, List<employees> stuList) {
try {
Object data[][] = new Object[stuList.size()][columnNames.length];
Iterator<employees> itr = stuList.iterator();
int i = 0;
while (itr.hasNext()) {
employees stu = itr.next();
data[i][0] =stu.getName();
data[i][1] = stu.getId();
data[i][2] = stu.getSex();
data[i][3] = stu.getBirth();
data[i][4]=stu.getAddress();
data[i][5]=stu.getTelephone();
data[i][6]=stu.getRole();
i++;
}
// 生成JTable
jt = new JTable(data, columnNames);
jt.setRowHeight(30);
jt.setPreferredScrollableViewportSize(new Dimension(700,400));
DefaultTableCellRenderer r=new DefaultTableCellRenderer();
r.setHorizontalAlignment(JLabel.CENTER);
jt.setDefaultRenderer(Object.class,r);
// 添加鼠标监听,监听到所选行
employTableMouseListener tml = new employTableMouseListener(jt, columnNames, sh);
jt.addMouseListener(tml);
// 设置可调整列宽
jt.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
jpjs=new JScrollPane();
JTableHeader jt1=jt.getTableHeader();
jt1.setPreferredSize(new Dimension(100, 50));
jt1.setFont(new Font("Menu.font", Font.PLAIN, 20));
jt1.setBackground(Color.PINK);
jpjs.getViewport().add(jt1);
jpjs.getViewport().add(jt);
} catch (Exception e) {
e.printStackTrace();
}
return jpjs;
}
}
class employTableMouseListener extends MouseAdapter {
private JTable jt;
public employees eme;
public employTableMouseListener(JTable jt, Object[] number, employees sh1) {
this.eme = sh1;
this.jt = jt;
}
// 监听到行号,将所选行的内容依次赋到 stud对象,以便传有值对象到修改面板进行修改
public void mouseClicked(MouseEvent event) {
int row = jt.getSelectedRow();
eme.setName(jt.getValueAt(row, 0).toString());
System.out.println(eme.getName());
eme.setId(jt.getValueAt(row, 1).toString());
eme.setSex(jt.getValueAt(row, 2).toString());
eme.setBirth(jt.getValueAt(row, 3).toString());
eme.setAddress(jt.getValueAt(row, 4).toString());
eme.setTelephone(jt.getValueAt(row, 5).toString());
eme.setRole(jt.getValueAt(row, 6).toString());
System.out.println(jt.getValueAt(row, 1).toString());
}
}
这次setBounds起到了一定的作用,整体界面显示较仓库管理是好点。然后,这里的代码仍然有几处不足。比如,search的点击事件函数里面写的太多,没有将其封装到一个类里面;每次添加,删除的面板更新需要add部件,不知道还有没更好的方法。
最后就是这里仍然是在jf里面显示,需要改成要全都是一个jp,小马说这样他合并的时候更高效。
public class JFreeChartTest {
public static void main(String[] args) {
DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图
dpd.setValue("管理人员", 25); //输入数据
dpd.setValue("市场人员", 25);
dpd.setValue("开发人员", 45);
dpd.setValue("其他人员", 10);
JFreeChart chart=ChartFactory.createPieChart("某公司人员组织数据图",dpd,true,true,false);
//可以查具体的API文档,第一个参数是标题,第二个参数是一个数据集,第三个参数表示是否显示Legend,第四个参数表示是否显示提示,第五个参数表示图中是否存在URL
ChartFrame chartFrame=new ChartFrame("某公司人员组织数据图",chart);
//chart要放在Java容器组件中,ChartFrame继承自java的Jframe类。该第一个参数的数据是放在窗口左上角的,不是正中间的标题。
chartFrame.pack(); //以合适的大小展现图形
chartFrame.setVisible(true);//图形是否可见
}
}
这是网上的一个扇形图,因为想到我的一个子块里面需要这个,就在网上搜了搜。在用类似扇形圆柱图之前需要导入两个包即可jcommon和jfreechart。在网上可以下载到。
明天将计划完成员工管理的最后几个子块。
杰克伦敦的不朽之作——《荒野的呼唤》等会将会继续阅读,今晚将迎来结局,拭目以待。