我们的界面设计分为3个部分:第一部分为个人用户信息的修改,但是由于时间的关系,我们只进行了界面的设计,没有能够进行后台数据库的连接;第二部分是我们的最重要的识别界面,在这个界面中,我们有文件夹的选择按钮,识别按钮,有结果输出框和时间和个数的输出框;第三部分为结果的打印部分。
由于我们的后台代码为JAVA代码,所以我们的界面用SWing来写,我们先写了一个整体的背景框架:
代码:
// ********************************************* // 第一步声明程序所需控件 // ********************************************* JFrame frame; // 上边面板的控件 JButton btn_add, btn_query_stu, btn_query_cnt; JPanel panel_head, panel_add, panel_query_stu, panel_query_cnt; // 下面第二个面板的控件 JLabel label_query_time,label_query_number; JTextField text_time,text_num,text_in; JTextArea text_result; JButton btn_Ok,btn_shibie; JScrollPane jsp; // 下面第一个面板的控件 JButton btn_submit; JLabel label_name, label_number, label_mark; JTextField text_name, text_number, text_mark, text_sta; // 下面第三个面板的控件 JLabel label; JTextField text_cnt; // ******************************** // 第二步设置 底层窗口属性 // ******************************** // 得到当前屏幕的尺寸 Toolkit kit = Toolkit.getDefaultToolkit); Dimension screenSize = kit.getScreenSize); int screenWidth = screenSize.width; int screenHeight = screenSize.height; // frame指底层窗口 frame = new JFrame"图片文字提取"); frame.setBoundsscreenWidth / 3, screenHeight / 4, 450, 300); // 设置位置及大小 frame.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE); frame.getContentPane).setBackgroundColor.lightGray); LayoutManager layoutMgr = null; frame.getContentPane).setLayoutnew BorderLayout)); // 使用绝对布局 frame.setResizablefalse); // 设置窗口大小不可变 // 上层面板 panel_head = new JPanel); panel_head.setBounds2, 0, 440, 40); panel_head.setBackgroundColor.lightGray); panel_head.setVisibletrue); panel_head.setLayoutnew GridLayout1, 3, 2, 0)); btn_add = new JButton"个人信息"); btn_add.setFontnew Font"宋体", 1, 12)); // 设置字体 格式 大小 btn_add.setVisibletrue); panel_head.addbtn_add); btn_add.addActionListenernew ActionListener) { public void actionPerformedActionEvent e) { panel_add.setVisibletrue); panel_query_stu.setVisiblefalse); panel_query_cnt.setVisiblefalse); } }); btn_query_stu = new JButton"图片识别"); btn_query_stu.setVisibletrue); panel_head.addbtn_query_stu); btn_query_stu.addActionListenernew ActionListener) { public void actionPerformedActionEvent e) { panel_add.setVisiblefalse); panel_query_stu.setVisibletrue); panel_query_cnt.setVisiblefalse); } }); btn_query_cnt = new JButton"文字打印"); btn_query_cnt.setVisibletrue); panel_head.addbtn_query_cnt); btn_query_cnt.addActionListenernew ActionListener) { public void actionPerformedActionEvent e) { panel_add.setVisiblefalse); panel_query_stu.setVisiblefalse); panel_query_cnt.setVisibletrue); } });
第一部分效果图:
代码:
Font font = new Font"宋体", 1, 16); panel_add = new JPanel); panel_add.setBounds2, 45, 440, 225); panel_add.setBackgroundColor.lightGray); panel_add.setLayoutnew GridLayout4, 2, 20, 20)); label_number = new JLabel"ID:"); label_number.setFontfont); label_number.setHorizontalAlignmentSwingConstants.CENTER); panel_add.addlabel_number); text_number = new JTextField); text_number.setFontfont); panel_add.addtext_number); label_name = new JLabel"姓名:"); label_name.setFontfont); label_name.setHorizontalAlignmentSwingConstants.CENTER); panel_add.addlabel_name); text_name = new JTextField); text_name.setFontfont); panel_add.addtext_name); label_mark = new JLabel"密码:"); label_mark.setFontfont); label_mark.setHorizontalAlignmentSwingConstants.CENTER); panel_add.addlabel_mark); text_mark = new JTextField); text_mark.setFontfont); panel_add.addtext_mark); btn_submit = new JButton"提交"); btn_submit.setFontfont); btn_submit.addActionListenernew ActionListener) { public void actionPerformedActionEvent e) { String s = text_mark.getText); } }); panel_add.addbtn_submit); text_sta = new JTextField); panel_add.addtext_sta); panel_add.setVisibletrue); frame.getContentPane).addpanel_add);
第二部分效果图:
代码:
panel_query_stu = new JPanel); panel_query_stu.setBounds2, 45, 440, 225); panel_query_stu.setBackgroundColor.lightGray); panel_query_stu.setLayoutlayoutMgr); label_query_time = new JLabel"识别时间:"); label_query_time.setBounds370, 60, 150, 40); panel_query_stu.addlabel_query_time); label_query_number = new JLabel"图片个数:"); label_query_number.setBounds370, 130, 150, 40); panel_query_stu.addlabel_query_number); text_in = new JTextField); text_in.setBounds160, 10, 180, 40); panel_query_stu.addtext_in); text_result = new JTextArea50,50); text_result.setBounds10, 60, 350, 160); text_result.setLineWraptrue); text_result.setWrapStyleWordtrue); text_result.setText"企业注册号 企业名称"); JScrollPane jsp=new JScrollPanetext_result); jsp.setBounds350,60,10,100); panel_query_stu.addjsp); panel_query_stu.addtext_result); text_time = new JTextField); text_time.setBounds370, 90, 150, 40); panel_query_stu.addtext_time); text_num = new JTextField); text_num.setBounds370, 160, 150, 40); panel_query_stu.addtext_num); panel_query_stu.addbtn_Ok); panel_query_stu.setVisiblefalse); frame.getContentPane).addpanel_query_stu);
第二部分的查询界面的设计效果图:
代码;
btn_shibie = new JButton"选择文件夹:"); btn_shibie.setFontfont); btn_shibie.setBounds10, 10, 140, 40); btn_shibie.addActionListenernew ActionListener) { public void actionPerformedActionEvent e) { // TODO Auto-generated method stub JFileChooser jfc=new JFileChooser); jfc.setFileSelectionModeJFileChooser.FILES_AND_DIRECTORIES ); jfc.showDialognew JLabel), "选择"); File file=jfc.getSelectedFile); long i=file.listFiles).length; String s=String.valueOfi); text_in.setTextfile.getAbsolutePath)); text_num.setTexts); /*iffile.isDirectory)){ System.out.println"文件夹:"+file.getAbsolutePath)); }else iffile.isFile)){ System.out.println"文件:"+file.getAbsolutePath)); }*/ } } )
第三部分效果图;
代码:
// // 下层面板 panel_query_cnt = new JPanel); panel_query_cnt.setBounds2, 45, 440, 225); panel_query_cnt.setBackgroundColor.lightGray); panel_query_cnt.setLayoutlayoutMgr); label = new JLabel"表格输出打印:"); label.setBounds10, 10, 150, 40); label.setFontfont); panel_query_cnt.addlabel); text_cnt = new JTextField); text_cnt.setBounds10, 60, 420, 140); panel_query_cnt.addtext_cnt); text_cnt.setText"表格文件存于E盘目录下,名称为:输出"); frame.getContentPane).addpanel_query_cnt); panel_query_cnt.setVisiblefalse); // 需添加完组件后设置可见 frame.setVisibletrue); // 设置窗口可见 }
结果输出效果图:
结论:此次的界面设计是我第一次使用swing进行较为大型的界面设计,不足在于我没能实现相对布局的设定,只实现了绝对布局。