zoukankan      html  css  js  c++  java
  • 【作业报告】20150407 作业2 结对 四则运算

    结对 四则运算

    程序开发简介:

    【开发环境】:eclipse

    【开发人员】:Ives & 杜殷浩

    【博客地址】:杜殷浩

    【开发时间】:2015-04-09

    【版本】:1.0

    【功能】:

        1.随机获取算式

        2.答题结束后能显示用户答对数目

        3.答题结束后显示全部题目的答案

        4.用户第一次答题输入用户逆臣

        5.能够改变界面的皮肤

     

    【分工】:Ives:

          界面的设计、改变界面的背景、保存用户昵称,连接数据库assess

         

     

         杜殷浩:

          

          随机获取算式,检验用户答案正确与否,显示题目答案,

     

     

    【特点】:

          1.连接了access数据库,能够保存并调用用户昵称

          2.能够改变界面的皮肤

          3.用户答完题弹出窗体提示题目答案与答对数目

    【缺陷】:

          1.不能处理小数(四舍五入)与分数

          2.不能重新做上次的题目

          3.没有限制用户答题的时间

          4.没有指出用户答错的题目

          5.不能选择运算的符号

          6.没有带括号的表达式

          7.用户不能选择答题数目和设置答题的时间

          8.最后没有算出用户得到的分数

          9.不能保存用户答题的记录和答题的分数记录

          10.答题界面不能更换皮肤

    序具体代码:

      1 package com.ives;
      2 
      3 
      4 import java.awt.*;
      5 
      6 import javax.swing.*;
      7 import com.ives.Login;
      8 import java.awt.event.ActionListener;
      9 import java.awt.event.ActionEvent;
     10 import java.sql.Connection;
     11 import java.sql.DriverManager;
     12 import java.sql.SQLException;
     13 import java.sql.Statement;
     14 import com.ives.Jisuan;
     15 /**
     16  * 作者 :Ives
     17  * 创建时间:2015年4月5日 下午19::16
     18  * 类说明:四则运算小程序
     19  */
     20 public class Login {
     21 
     22     private JFrame frame;
     23     private JLabel lblNewLabel_1;
     24     private JButton button;
     25     public static JTextField textField;
     26     static JButton btnNewButton;
     27     //使用MPanel这个类来创建panel,这样可以创建带背景的面板
     28     MPanel panel = new MPanel(this.getClass().getResource("/img/background2.jpg"));
     29     public static void main(String[] args) {
     30         EventQueue.invokeLater(new Runnable() {
     31             public void run() {
     32                 try {
     33                     Login window = new Login();
     34                     window.frame.setVisible(true);
     35                 } catch (Exception e) {
     36                     e.printStackTrace();
     37                 }
     38             }
     39         });
     40     }
     41 
     42     public Login() {
     43         initialize();
     44     }
     45 
     46     private void initialize() {
     47         frame = new JFrame();
     48         frame.setTitle("u7528u6237u767Bu9646");
     49         frame.setSize(493,333);
     50         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     51         frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));
     52         
     53         Toolkit kit = Toolkit.getDefaultToolkit();
     54         Dimension screen = kit.getScreenSize();//获取屏幕高宽
     55         int x = screen.width;
     56         int y = screen.height;
     57         int xcenter = (x-493)/2;
     58         int ycenter = (y-333)/2;
     59         frame.setLocation(xcenter,ycenter);//设置窗体居中
     60         
     61         frame.getContentPane().add(panel);
     62         panel.setLayout(null);
     63 
     64         JLabel lblNewLabel = new JLabel("            u5C0Fu5B66u751Fu56DBu5219u8FD0u7B97u7A0Bu5E8F            ");
     65         lblNewLabel.setBounds(0, 29, 504, 34);
     66         panel.add(lblNewLabel);
     67         lblNewLabel.setFont(new Font("华文行楷", Font.BOLD, 30));
     68         
     69         lblNewLabel_1 = new JLabel("u6635u79F0   ");
     70         lblNewLabel_1.setBounds(95, 121, 68, 28);
     71         panel.add(lblNewLabel_1);
     72         lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
     73         lblNewLabel_1.setVerticalAlignment(SwingConstants.TOP);
     74         lblNewLabel_1.setFont(new Font("华文行楷", Font.PLAIN, 25));
     75         
     76         textField = new JTextField();
     77         textField.setBounds(181, 123, 156, 27);
     78         panel.add(textField);
     79         textField.setFont(new Font("华文行楷", Font.PLAIN, 18));
     80         textField.setColumns(15);
     81         
     82         button = new JButton("u786Eu5B9A");
     83         button.addActionListener(new buttonActionListener());
     84         button.setBounds(137, 229, 77, 29);
     85         panel.add(button);
     86         button.setFont(new Font("华文行楷", Font.PLAIN, 18));
     87         
     88         btnNewButton = new JButton("u53D6u6D88");
     89         btnNewButton.addActionListener(new ActionListener() {
     90             public void actionPerformed(ActionEvent e) {
     91                 frame.dispose();//窗体关闭
     92             }
     93         });
     94         btnNewButton.setBounds(283, 229, 77, 29);
     95         panel.add(btnNewButton);
     96         btnNewButton.setFont(new Font("华文行楷", Font.PLAIN, 18));
     97         }
     98 
     99     class buttonActionListener implements ActionListener {
    100         public void actionPerformed(ActionEvent e) {
    101         try {
    102             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//调用jdbc.odbc驱动
    103         } catch (ClassNotFoundException e1) {
    104             e1.printStackTrace();
    105         }  
    106         try{  //连接access数据库,Nichen是数据库的名臣
    107             String url = "jdbc:odbc:Nichen.mdb";
    108             Connection con=DriverManager.getConnection(url);
    109             Statement sql=con.createStatement();  
    110             String nichen=textField.getText().trim(); 
    111             if(textField.getText().equals("")) 
    112             { //如果用户没有输入昵称,则提示用户
    113                 JOptionPane.showMessageDialog(null,"请输入昵称","提示!",  JOptionPane.YES_NO_OPTION);
    114              }
    115             else{ 
    116                 //向Nichen表的属性nichen插入数据
    117                 String s="insert into Nichen(nichen)  values('"+textField.getText()+"')";
    118                 Jisuan jisuan = new Jisuan();
    119                 jisuan.setVisible(true);
    120                 frame.setVisible(false);
    121                 con.close();  //断开与数据库的连接
    122             } 
    123             } catch(SQLException g) { 
    124                 System.out.println("E Code"+g.getErrorCode()); //获取sql server的系统错误代号
    125                 System.out.println("E M"+g.getMessage()); 
    126                 }  
    127     }  
    128     }
    129 }
    130 
    131 
    132 package com.ives;
    133 
    134 import javax.swing.JFrame;
    135 import javax.swing.JLabel;
    136 import java.awt.Font;
    137 import javax.swing.JButton;
    138 import java.awt.event.ActionListener;
    139 import java.awt.event.ActionEvent;
    140 import java.awt.event.MouseAdapter;
    141 import java.awt.event.MouseEvent;
    142 
    143 import com.dyh.suanshi;
    144 
    145 public class Jisuan extends JFrame{
    146 
    147     int i = 1;//计数器
    148     private JFrame frame;
    149     public MPanel panel = new MPanel(this.getClass().getResource("/img/background2.jpg"));
    150 
    151     public static void main(String args[]) {
    152         try {
    153             Jisuan frame = new Jisuan();
    154             frame.setVisible(true);
    155         } catch (Exception e) {
    156             e.printStackTrace();
    157         }
    158     }
    159 
    160     public Jisuan() {
    161         super();//继承父类的构造方法
    162         setTitle("u56DBu5219u8FD0u7B97u7CFBu7EDF");
    163         setBounds(100, 100, 550, 550);
    164         setAlwaysOnTop(true);
    165         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    166         panel.setLayout(null);// 设置面板的布局管理器为null
    167         getContentPane().add(panel);// 将面板添加到窗体
    168         
    169         JLabel label = new JLabel("u56DBu5219u8FD0u7B97u7CFBu7EDF");
    170         label.setLocation(166, 10);
    171         label.setSize(220, 40);
    172         panel.add(label);
    173         label.setFont(new Font("华文行楷", Font.PLAIN, 35));
    174         
    175         
    176         JButton btnNewButton = new JButton("u8BBEu7F6Eu76AEu80A4");
    177         btnNewButton.setLocation(79, 117);
    178         btnNewButton.setSize(122, 45);
    179         panel.add(btnNewButton);
    180         btnNewButton.setFont(new Font("华文行楷", Font.PLAIN, 20));
    181         
    182         btnNewButton.addMouseListener(new MouseAdapter()//鼠标监听
    183         {
    184 
    185             public void mouseClicked(MouseEvent e)
    186             {
    187                 if(e.getClickCount()==1)
    188                 {
    189                     i++;
    190                     System.out.println("i="+i);
    191                 }    
    192             }
    193         });
    194         
    195         btnNewButton.addActionListener(new ActionListener()//按钮监听
    196         {
    197             public void actionPerformed(ActionEvent e) {
    198                 
    199                 if(i == 1)
    200                     panel.mpanel(this.getClass().getResource("/img/backgrouda.jpg"));
    201                         
    202                 if(i == 2)
    203                     panel.mpanel(this.getClass().getResource("/img/background2.jpg"));
    204                      
    205                 if(i ==3)
    206                 {
    207                     panel.mpanel(this.getClass().getResource("/img/lvse.jpg"));
    208                     i = 0;
    209                 }
    210             }
    211         });
    212             
    213         
    214 
    215         JButton button_1 = new JButton("u8BBEu7F6Eu65F6u95F4");
    216         button_1.setLocation(340, 117);
    217         button_1.setSize(122, 45);
    218         panel.add(button_1);
    219         button_1.addActionListener(new ActionListener() {
    220             public void actionPerformed(ActionEvent e) {
    221             }
    222         });
    223         button_1.setFont(new Font("华文行楷", Font.PLAIN, 20));
    224         
    225         JButton btnNewButton_1 = new JButton("u67E5u770Bu5206u6570");
    226         btnNewButton_1.setLocation(340, 214);
    227         btnNewButton_1.setSize(122, 45);
    228         panel.add(btnNewButton_1);
    229         btnNewButton_1.addActionListener(new ActionListener() {
    230             public void actionPerformed(ActionEvent e) {
    231             }
    232         });
    233         btnNewButton_1.setFont(new Font("华文行楷", Font.PLAIN, 20));
    234         
    235                 
    236         JButton button = new JButton("u81EAu4E3Bu547Du9898");
    237         button.setLocation(79, 214);
    238         button.setSize(122, 45);
    239         panel.add(button);
    240         button.setFont(new Font("华文行楷", Font.PLAIN, 20));
    241         
    242         JButton btnNewButton_2 = new JButton("u8FDBu5165u7B54u9898");
    243         btnNewButton_2.setFont(new Font("华文行楷", Font.PLAIN, 25));
    244         btnNewButton_2.setBounds(198, 330, 152, 53);
    245         panel.add(btnNewButton_2);
    246         
    247         btnNewButton_2.addActionListener(new ActionListener() {
    248             public void actionPerformed(ActionEvent e) {
    249                 suanshi suanshi=new suanshi();    
    250                 suanshi.setVisible(true);
    251                 frame.setDefaultCloseOperation(HIDE_ON_CLOSE);
    252             }    
    253         });
    254     }
    255 }
    256 
    257 public class MPanel extends JPanel {
    258 
    259     private ImageIcon imageIcon;// 声明一个图片对象
    260     protected MPanel MPanel1;
    261 
    262     public MPanel(URL imgUrl) {
    263         super();// 继承父类的构造方法
    264         imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象
    265         setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大
    266     }
    267     public void mpanel(URL imgUrl) {
    268         //setLayout(new GridBagLayout());// 将布局管理器修改为网格组布局
    269         imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象
    270         setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大
    271     }
    272     protected void paintComponent(Graphics g) {// 重写JPanel类的paintComponent()方法
    273         super.paintComponent(g);// 调用JPanel类的paintComponent()方法
    274         Image image = imageIcon.getImage();// 通过ImageIcon对象获得Image对象
    275         g.drawImage(image, 0, 0, null);// 绘制Image对象,即将图片绘制到面板中
    276     }
    277 }
    Ives
     
      1 package com.dyh;
      2 
      3 /**
      4  * 作者 :杜殷浩
      5  * 创建时间:2015年4月5日 下午18:00
      6  * 类说明:四则运算小程序
      7  */
      8 import java.awt.FlowLayout;
      9 import java.awt.Font;
     10 import java.awt.GridLayout;
     11 import java.awt.event.ActionEvent;
     12 import java.awt.event.ActionListener;
     13 
     14 import javax.swing.JButton;
     15 import javax.swing.JFrame;
     16 import javax.swing.JLabel;
     17 import javax.swing.JPanel;
     18 import javax.swing.JTextField;
     19 import javax.swing.BoxLayout;
     20 import javax.swing.SwingConstants;
     21 import com.ives.MPanel;
     22 
     23 public class suanshi extends JFrame implements ActionListener{
     24     JTextField[] kj;
     25     JTextField yy;
     26     JFrame g;
     27     JLabel biaot,timu,kk,k1,jieguo,dd;
     28     JButton wq,qd;
     29     JPanel p1,p2,p3,p4;
     30     int i,tj;
     31     String ssss;
     32     int []da=new int[5];
     33     private JPanel panel;
     34     public suanshi()
     35     {
     36         
     37         super("小学生四则运算");
     38         getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
     39         
     40         MPanel panel = new MPanel(this.getClass().getResource("/img/background2.jpg"));
     41         getContentPane().add(panel);
     42           panel.setLayout(new GridLayout(0, 1, 0, 3));
     43          
     44              
     45           p1=new JPanel();
     46           panel.add(p1);
     47           FlowLayout fl1 = new FlowLayout(FlowLayout.CENTER,10,10);  
     48           p1.setLayout(fl1);
     49           biaot=new JLabel("小学生四则运算");
     50           biaot.setFont(new Font("楷体", Font.BOLD,20));
     51           p1.add(biaot);
     52           p1.setOpaque(false);
     53          
     54       
     55          p2=new JPanel();
     56          panel.add(p2);
     57          p2.setLayout(new GridLayout(1,0,10,10));
     58          timu=new JLabel("u968Fu673Au9898u76EEuFF1A");
     59          k1=new JLabel(" ");
     60          k1.setHorizontalAlignment(SwingConstants.CENTER);
     61          k1.setFont(new Font("黑体", Font.BOLD, 30));
     62          p2.add(timu);
     63          p2.add(k1);
     64          p2.setOpaque(false);
     65          
     66           p3=new JPanel();
     67           panel.add(p3);
     68           p3.setLayout(new GridLayout(1,0,10,10));
     69           jieguo=new JLabel("输入答案:");
     70           p3.add(jieguo);
     71           kk=new JLabel(" ");
     72           kk.setFont(new Font("黑体", Font.BOLD, 28));
     73           kk.setHorizontalAlignment(SwingConstants.CENTER);
     74           p3.add(kk);
     75           p3.setOpaque(false);
     76          
     77           p4=new JPanel();
     78           panel.add(p4);
     79          
     80           p4.setLayout(null);
     81           wq=new JButton("获取题目");
     82           wq.setLocation(203, 10);
     83           wq.setSize(118, 31);
     84           qd=new JButton("提交答案");
     85           qd.setLocation(350, 10);
     86           qd.setSize(118, 31);
     87           p4.add(wq);
     88           p4.add(qd);
     89           p4.setOpaque(false);
     90           wq.addActionListener(this);
     91           qd.addActionListener(this);
     92           kj=new JTextField[10];
     93          for (int i= 0;i<5;i++) 
     94          {  
     95             kj[i] = new JTextField();
     96             p2.add(kj[i]);  
     97             }  
     98         for (int i= 5;i<10;i++) 
     99         {  
    100             kj[i] = new JTextField();
    101             p3.add(kj[i]);  
    102         }  
    103         yy=new JTextField(3);
    104         setBounds(350,250,640,227);
    105         setVisible(true);
    106     }
    107     public void actionPerformed(ActionEvent e)
    108     {
    109         
    110         if(e.getActionCommand().equals("获取题目"))  //判断点击的按钮
    111         {
    112             for(i=0;i<5;i++)
    113             {
    114                 int sz1=(int)(Math.random()*10+1);
    115                 int sz2=(int)(Math.random()*10+1);
    116                 int sz=(int)(Math.random()*4);
    117                 switch(sz)
    118                 {
    119                 case 0:
    120                     ssss=String.valueOf(sz1)+'+'+String.valueOf(sz2); //把式子转为字符
    121                     da[i]=sz1+sz2;
    122                     kj[i].setText(ssss);//把生成的式子添加到文本框
    123                     break;
    124                 case 1:
    125                     ssss=String.valueOf(sz1)+'-'+String.valueOf(sz2);
    126                     da[i]=sz1-sz2;
    127                     kj[i].setText(ssss);
    128                     break;
    129                 case 2:
    130                     ssss=String.valueOf(sz1)+'*'+String.valueOf(sz2);
    131                     da[i]=sz1*sz2;
    132                     kj[i].setText(ssss);
    133                     break;
    134                 case 3:
    135                     ssss=String.valueOf(sz1)+'/'+String.valueOf(sz2);
    136                     da[i]=sz1/sz2;
    137                     kj[i].setText(ssss);
    138                     break;
    139                 }
    140             }
    141         }
    142         else if(e.getActionCommand().equals("提交答案"))
    143         {
    144              int a,b=0,c=0;
    145              for(a=5;a<10;a++)
    146              {
    147                  int first= Integer.parseInt(kj[a].getText()); //把文本框输入的答案转为整形
    148                  if (first==da[b]) //判断答案是否正确
    149                  {
    150                      c++; //记录答对题目的个数
    151                  }
    152                  b++;
    153              }
    154              g=new JFrame("答案");
    155              GridLayout ggg = new GridLayout(6,0,10,10); 
    156              g.getContentPane().setLayout(ggg);
    157              JLabel sm=new JLabel("答对题目数:"+c);
    158              JLabel []ct=new JLabel[5];
    159              for(a=0;a<5;a++)
    160              {
    161                  ct[a]=new JLabel("第"+(a+1)+"题"+"答案为:"+da[a]);
    162                  g.getContentPane().add(ct[a]);
    163              }
    164              g.getContentPane().add(sm);
    165              g.setBounds(550,270,180,180);
    166              g.setVisible(true);
    167         }    
    168     }
    169     public static void main(String[] args) {
    170         suanshi frame=new suanshi();
    171         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    172     }
    173 
    174 }
    杜殷浩

    程序运行截图:

    个人心得:

        Ives:

          这次做1.0版本的的四则运算着实有难度,我是说对我自己来说。因为java用得真的很少很少。学java的时候又没有认真地听讲,到了用的时候什么都好像没学过一样,特别是swing这一块,不熟悉真的玩不来。不过这些东西,写多了就会很上手了。刚刚做界面的时候不知道用什么布局,因为用什么布局都不能任意拖动组建,不能调节组件的大小。后来有人告诉我说直接写setLayout(null)就可以拖动了,因为那些布局管理器是在不会用,不过这些以后都会慢慢琢磨琢磨的。从开始的不知道怎么写监听器到现在慢慢会写出按钮监听器,鼠标监听器,实在有不少成就感。虽然可能说做界面比较简单,但是说实话,我真的做了很久,也很用心地去做,到运行之后看到一个自己写出来的界面就觉得心情真愉悦。

          我觉得写代码真的要命名规范,我结对的同学命名就没有很规范,以至于我看他的代码的时候真的有点吃力,因为变量定义不明显的时候你看到下面又得重新看回前面,缩进也是很重要的,因为这样代码看上去会更加美观,可读性也会好很多。我们应该多看别人的代码,看看别人的风格是怎么样的,看看别人在写这个程序的时候他的思路是怎么样的。世界上没有两块相同的叶子,同样滴,世界上也没有两块完全相同的代码块。因为每个人的思路都不一样,所以写出来的代码也是有区别的。我们多学习一些优秀的代码,真的会学到很多。而且我越来越有感觉:语言真的需要多练!

          在写代码之前真的要花一定的时间去思考你要怎么去设计,不然写完之后你可能有些东西要添加进去,谁知道一添加就会出现无数多的BUG,自己又不知道应该怎么解决,然后就是:算了,不添加。或者是 重新写一遍。所以说,一定要思考,设计好要怎么写,这样在以后的调试或者重构的时候会更加的方便。

    总结 :

          在写的过程中遇到的困难和解决的方法我要在贴出来,到时候自己又遇到这样的困难忘记了怎么解决就可以上来这样找办法了.

          1.我在创建构造方法里面声明创建一个面板,然后我在另一个方法里面调用,当时一直搞不清应该怎么样才可以调用,后来虚心求教,同学告诉我说应该定义成全局变量。因为使用一个未声明的变量panel肯定会报错的。如果定义成全局变量,那就不会报错了。后来觉悟了,这么简单的问题为什么当时没想到,一度陷入了沉思。。。哈哈

        

          2.插入图片,这是在是一个难题,我用了好几天才找出来怎么样插入一个背景到面板里面。如果要插入背景图片,其实有两种方法,我用的是第二种。

    第一种是利用标签。把一个图片放进标签里面,然后设置标签大小与面板大小一样。代码如下:

     1 import javax.swing.ImageIcon;
     2 import javax.swing.JFrame;
     3 import javax.swing.JLabel;
     4 import javax.swing.JPanel;
     5 public class MainJFrame extends JFrame {
     6 
     7     public MainJFrame() {
     8         //设置标题
     9         super("JFram设置背景图片(Cannel_2020)");
    10         //设置大小
    11         setSize(500, 400);
    12         //设置位置
    13         setLocation(200, 50);
    14         //背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下)
    15         String path = "background.jpg";
    16         // 背景图片
    17         ImageIcon background = new ImageIcon(path);
    18         // 把背景图片显示在一个标签里面
    19         JLabel label = new JLabel(background);
    20         // 把标签的大小位置设置为图片刚好填充整个面板
    21         label.setBounds(0, 0, this.getWidth(), this.getHeight());
    22         // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
    23         JPanel imagePanel = (JPanel) this.getContentPane();
    24         imagePanel.setOpaque(false);
    25         // 把背景图片添加到分层窗格的最底层作为背景
    26         this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
    27         //设置可见
    28         setVisible(true);
    29         //点关闭按钮时退出
    30         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    31     }
    32 
    33     public static void main(String[] args) {
    34         new MainJFrame();
    35     }
    36 }
    利用标签插入背景

          

    第二种方法就是重写JPanel类的paintComponent(Graphics g)方法,实现支持绘制背景图片的功能。代码如下

     1 public class MPanel extends JPanel {
     2 
     3     private ImageIcon imageIcon;// 声明一个图片对象
     4     protected MPanel MPanel1;
     5 
     6     public MPanel(URL imgUrl) {
     7         super();// 继承父类的构造方法
     8         imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象
     9         setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大
    10     }
    11     public void mpanel(URL imgUrl) {
    12         //setLayout(new GridBagLayout());// 将布局管理器修改为网格组布局
    13         imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象
    14         setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大
    15     }
    16     protected void paintComponent(Graphics g) {// 重写JPanel类的paintComponent()方法
    17         super.paintComponent(g);// 调用JPanel类的paintComponent()方法
    18         Image image = imageIcon.getImage();// 通过ImageIcon对象获得Image对象
    19         g.drawImage(image, 0, 0, null);// 绘制Image对象,即将图片绘制到面板中
    20     }
    21 }
    改写类来绘制背景

    当时我看着书本敲完这段代码的时候,我蒙了一会,因为我敲完之后是出现bug的,但是我和书本上的是没差的。后来我直接复制书本上的过来,它没出现bug了,我不信我写错了那部分,不过出现bug是事实,但是确实不知道哪里出错了。虽然复制代码过来了,但是调用这个类也用了半天的时间。我声明创建MPanel panel = new MPanel(“background.jpg”);这样是不成功的。后来才发现了要用this.getClass().getResource("");这个东西来获取图片。

    虽然我这样写了,但是还是不行,因为我没有导入图片到img包里面,如,所以这个界面的背景真的弄了很久。

    所以,使用MPanel类来创建面板,传递图片的时候一定要使用this.getClass().getResource(""/img/background2.jpg"");然后再向img包里面导入图片。

        3.连接数据库的时候也是有些小困难。我连接好数据库之后,打开,按确定竟然没有反应,我打开数据库的表来看,里面也没有任何东西。因为我没有写SQL语句,没有写String s="insert into Nichen(nichen)  values('"+textField.getText()+"')";所以才会没反应,这样是粗心和没有熟练SQL语句造成的。

    连接数据库有几点要注意的,第一首先要设计好数据库,数据库名称,表名,属性,类型。第二就是连接数据库,

     1 class buttonActionListener implements ActionListener {
     2         public void actionPerformed(ActionEvent e) {
     3         try {
     4             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//调用jdbc.odbc驱动
     5         } catch (ClassNotFoundException e1) {
     6             e1.printStackTrace();
     7         }  
     8         try{  //连接access数据库,xxx是数据库的名臣
     9             String url = "jdbc:odbc:xxx.mdb";
    10             Connection con=DriverManager.getConnection(url);
    11             Statement sql=con.createStatement();
    连接数据库

    第三就是配置好数据源。控制面板-----管理工具------数据源(0DBC),然后点击 “添加”,选择Microsoft Access Driver(*.mdb,*.accdb),然后选择你的数据库所在的文件夹,重点是写数据源名的时候一定要加上后缀mdb.如果你创建数据库的时候名字是accdb的时候在配置数据源的时候数据源名应该是写成accdb的,因为我是在创建数据库的时候把它的后缀改成mdb的。还有就是也要把那个数据库的表导入到文件里面。

    大概就是这么多了。以上全都是个人见解,我不知道我说的是不是都对,如果哪里有错误的,欢迎大家指出。

    ---------------------------本次报告到此结束,谢谢老师审阅。---------------

  • 相关阅读:
    Sequelize框架:
    sequelize 测试
    sequelize 用于PostgreSQL,MySQL,SQLite和MSSQL的Node.js / io.js ORM
    node Util 模块
    bluebird的安装配置
    bluebird 开发文档链接
    Node.js的__dirname,__filename,process.cwd(),./的含义
    editplus
    luogu3377 【模板】左偏树(可并堆)
    cf936c Lock Puzzle
  • 原文地址:https://www.cnblogs.com/IvesHe/p/4410518.html
Copyright © 2011-2022 走看看