我们的界面设计分为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.setBounds(screenWidth / 3, screenHeight / 4, 450, 300); // 设置位置及大小 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setBackground(Color.lightGray); LayoutManager layoutMgr = null; frame.getContentPane().setLayout(new BorderLayout()); // 使用绝对布局 frame.setResizable(false); // 设置窗口大小不可变 // 上层面板 panel_head = new JPanel(); panel_head.setBounds(2, 0, 440, 40); panel_head.setBackground(Color.lightGray); panel_head.setVisible(true); panel_head.setLayout(new GridLayout(1, 3, 2, 0)); btn_add = new JButton("个人信息"); btn_add.setFont(new Font("宋体", 1, 12)); // 设置字体 格式 大小 btn_add.setVisible(true); panel_head.add(btn_add); btn_add.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel_add.setVisible(true); panel_query_stu.setVisible(false); panel_query_cnt.setVisible(false); } }); btn_query_stu = new JButton("图片识别"); btn_query_stu.setVisible(true); panel_head.add(btn_query_stu); btn_query_stu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel_add.setVisible(false); panel_query_stu.setVisible(true); panel_query_cnt.setVisible(false); } }); btn_query_cnt = new JButton("文字打印"); btn_query_cnt.setVisible(true); panel_head.add(btn_query_cnt); btn_query_cnt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel_add.setVisible(false); panel_query_stu.setVisible(false); panel_query_cnt.setVisible(true); } });
第一部分效果图:
代码:
Font font = new Font("宋体", 1, 16); panel_add = new JPanel(); panel_add.setBounds(2, 45, 440, 225); panel_add.setBackground(Color.lightGray); panel_add.setLayout(new GridLayout(4, 2, 20, 20)); label_number = new JLabel("ID:"); label_number.setFont(font); label_number.setHorizontalAlignment(SwingConstants.CENTER); panel_add.add(label_number); text_number = new JTextField(); text_number.setFont(font); panel_add.add(text_number); label_name = new JLabel("姓名:"); label_name.setFont(font); label_name.setHorizontalAlignment(SwingConstants.CENTER); panel_add.add(label_name); text_name = new JTextField(); text_name.setFont(font); panel_add.add(text_name); label_mark = new JLabel("密码:"); label_mark.setFont(font); label_mark.setHorizontalAlignment(SwingConstants.CENTER); panel_add.add(label_mark); text_mark = new JTextField(); text_mark.setFont(font); panel_add.add(text_mark); btn_submit = new JButton("提交"); btn_submit.setFont(font); btn_submit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = text_mark.getText(); } }); panel_add.add(btn_submit); text_sta = new JTextField(); panel_add.add(text_sta); panel_add.setVisible(true); frame.getContentPane().add(panel_add);
第二部分效果图:
代码:
panel_query_stu = new JPanel(); panel_query_stu.setBounds(2, 45, 440, 225); panel_query_stu.setBackground(Color.lightGray); panel_query_stu.setLayout(layoutMgr); label_query_time = new JLabel("识别时间:"); label_query_time.setBounds(370, 60, 150, 40); panel_query_stu.add(label_query_time); label_query_number = new JLabel("图片个数:"); label_query_number.setBounds(370, 130, 150, 40); panel_query_stu.add(label_query_number); text_in = new JTextField(); text_in.setBounds(160, 10, 180, 40); panel_query_stu.add(text_in); text_result = new JTextArea(50,50); text_result.setBounds(10, 60, 350, 160); text_result.setLineWrap(true); text_result.setWrapStyleWord(true); text_result.setText("企业注册号 企业名称"); JScrollPane jsp=new JScrollPane(text_result); jsp.setBounds(350,60,10,100); panel_query_stu.add(jsp); panel_query_stu.add(text_result); text_time = new JTextField(); text_time.setBounds(370, 90, 150, 40); panel_query_stu.add(text_time); text_num = new JTextField(); text_num.setBounds(370, 160, 150, 40); panel_query_stu.add(text_num); panel_query_stu.add(btn_Ok); panel_query_stu.setVisible(false); frame.getContentPane().add(panel_query_stu);
第二部分的查询界面的设计效果图:
代码;
btn_shibie = new JButton("选择文件夹:"); btn_shibie.setFont(font); btn_shibie.setBounds(10, 10, 140, 40); btn_shibie.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JFileChooser jfc=new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES ); jfc.showDialog(new JLabel(), "选择"); File file=jfc.getSelectedFile(); long i=file.listFiles().length; String s=String.valueOf(i); text_in.setText(file.getAbsolutePath()); text_num.setText(s); /*if(file.isDirectory()){ System.out.println("文件夹:"+file.getAbsolutePath()); }else if(file.isFile()){ System.out.println("文件:"+file.getAbsolutePath()); }*/ } } )
第三部分效果图;
代码:
// // 下层面板 panel_query_cnt = new JPanel(); panel_query_cnt.setBounds(2, 45, 440, 225); panel_query_cnt.setBackground(Color.lightGray); panel_query_cnt.setLayout(layoutMgr); label = new JLabel("表格输出打印:"); label.setBounds(10, 10, 150, 40); label.setFont(font); panel_query_cnt.add(label); text_cnt = new JTextField(); text_cnt.setBounds(10, 60, 420, 140); panel_query_cnt.add(text_cnt); text_cnt.setText("表格文件存于E盘目录下,名称为:输出"); frame.getContentPane().add(panel_query_cnt); panel_query_cnt.setVisible(false); // 需添加完组件后设置可见 frame.setVisible(true); // 设置窗口可见 }
结果输出效果图:
结论:此次的界面设计是我第一次使用swing进行较为大型的界面设计,不足在于我没能实现相对布局的设定,只实现了绝对布局。