zoukankan      html  css  js  c++  java
  • JAVA课程设计

    一、团队课程设计博客链接

    http://www.cnblogs.com/sakurai3104/p/7063125.html

    二、个人负责模块或任务说明

    • 我主要负责主运行界面和跳转弹窗界面的设计
    • 解决了少部分主代码运行上的问题

    三、个人代码提交记录截图

    • 由于编写代码的个人电脑没法连网,所以代码都是下午回宿舍之后上传的。且是一次性上传,所以这边只有三个显示,但是每次上传基本有两个及以上的类。

    四、自己负责模块或任务详细说明

    • 首先是界面上的按钮的设计,定义属性,注册监听器什么的。这一部分也没什么技术含量,就是一个复制粘贴的过程

    • 然后是事件监听器部分。这一部分主要是增加了一个弹窗。int m =JOptionPane.showOptionDialog(null,"重新选择对战模式","重新开始",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]);主要是使用JAVA自带的JOptionPane中的方法,产生一个多项选择框,通过返回值m来获取具体选则的是哪一个选项,从而进行下一步的变化。代码很精简,主要就是这一句,但是这就影响了其他功能。比如说字体不好看,界面有点小的问题。我查阅了API文档,发现如果要使用这样集成好的代码,就没法对字体修改属性。只能用内嵌按钮的方式来进行。但如果这样的话,前面的就要作废,考虑到时间问题,还是没有选择修改。

    • 本来界面设计是想写在一个类里的,后来考虑了一下还是又加了一个类。主要原因也是上面差不多,能更好的对弹窗进行修改

    • 另外关于主程序,由于存在切换上的bug。一开始是以为界面和人机对战及人人对战的代码融合问题。所以由我负责修改,但是后面发现时一个运行的逻辑顺序问题

    • 最后是关于绘制的问题。因为棋子的绘制以前是从来不会的,所以这个部分就从网上找到了参考代码,经过测试,基本明白了代码的作用,以及知道了Graphics2D类可以用来做图像的处理

    • ((Graphics2D) g).setRenderingHint(); 消除线段的锯齿状边缘


                   , new Color[]{Color.WHITE, Color.BLACK});```
     ```((Graphics2D) g).setPaint(paint);```绘制棋子,加上高光效果
    ![](http://images2015.cnblogs.com/blog/1109779/201706/1109779-20170622090956538-95421616.png)
    
    
    
    ##五、课程设计总结与感想
    
    ###1.
    	 super.paintComponent(g);
    //画棋盘  是父类JPanel里的方法,会把整个面板用背景色重画一遍,起到清屏的作用。在swing控件中,paint方法会依次调用paintcomponent,paintborder,painchildren方法,后两者一般默认即可,所以swing编程时,如果继承jcomponent或者其子类,要覆盖paintcomponente而不是paint方法
    
    ### 2.
    	img=Toolkit.getDefaultToolkit().getImage("C:\Users\CL\Desktop\timg.jpg");  
    设置顶层容器的大小或位置
    因为是抽象类,所以不能用new 实例化,可以用getDefaultToolkit返回Toolkit类的对象
    例如: Toolkit toolkit=Toolkit.getDefaultToolkit();
    
    ###3.处理图片为半透明
    	   
       		public void byEachPixel(Graphics dst,ImageIcon icon,inx,int y,int alpha){
    	   
    	   BufferedImage bir = new BufferedImage(icon.getIconWidth(),icon.getIconHeight(),BufferedImage.TYPE_INT_ARGB);
    	   Graphics2D birg2d = bir.createGraphics();
    	   birg2d.drawImage(icon.getImage(), 0, 0, icon.getImageObserver());
    
    	   for(int i=bir.getMinX();i<bir.getWidth();i++){
    	   for(int j=bir.getMinY();j<bir.getHeight();j++){
    	   //System.out.println(bir.getRGB(i, j));
    	   int rgb = bir.getRGB(i, j);
    	   if((rgb&0xff000000)!=0x00000000){
    	   rgb = (alpha<<24)|(rgb&0x00ffffff);
    	   }
    	   bir.setRGB(i, j, rgb);
    	   }
    	   }
    
    	   dst.drawImage(bir, x, y, this);
    	   } 
       
    ###4.设置画线
    
    	  ((Graphics2D) g).setStroke(new BasicStroke(2.0f));//设置线的粗细
    关于划线,drawImage是Graphics类的一个方法
    
    ###5.弹窗
    showOptionDialog函数
    
    	Object[] options={"人机对战","人人对战"};
                  int m =JOptionPane.showOptionDialog(null,"重新选择对战模式","重新开始",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]);
    
    ###6.监听器
    	ActionListener接口继承自EventListener
    对处理操作时间感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的addActionListener方法向该组件注册。在发生操作事件时,调用该对象的actionPerformed方法
    
    ###7.对JFrame添加组件
    - 用getContenPane()方法获得JFame的内容面板,再对其加入组件:frame.getContenPane(),add(childComponent)
    - 建立一个Jpanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板
    	JpanelcontentPane=new Jpanel();//把其他组件添加到Jpanel中
    	frame.setContentPane(contentPane);//把contentPane对象设置为frame的内容面板
    
    ###8.修改属性
    	 //确定按钮  
    	JButton btnYes = new JButton("可以了哦");
    	btnYes.setFont(new Font("幼圆", Font.BOLD, 16));
    	btnYes.setForeground(Color.MAGENTA);
    	// 否定按钮
    	JButton btnNo = new JButton("不行不行");
    	btnNo.setFont(new Font("幼圆", Font.ITALIC, 18));
    	btnNo.setForeground(Color.PINK);
    	// 按钮选项加入数组
    	Object[] options = { btnYes, btnNo };
    	// 文本内容
    	JLabel label = new JLabel("我是加入了Label和JButton的Dialog这样可以吗?");
    	label.setForeground(Color.ORANGE);
    	label.setFont(new Font("宋体", Font.ITALIC, 16));
    	// 显示
    	DialogJOptionPane.showOptionDialog(null, label, "标题", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,null, options, options[0]);
    
    ####方法二
    
    	// 设置按钮显示效果
    	UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("宋体", Font.ITALIC, 13)));
    	// 设置文本显示效果
    	UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 13)));
    	JOptionPane.showMessageDialog(null, "我是用UIManager设置过的Dialog");
    
    ###9.感想
    - 感觉团队形式的课程设计对于部分能力较弱的同学来说比较友好。在有分工的情况下,可以专攻一个方向,学习起来会更快速。
    - 但是也存在一个“磨合”问题。由于团队两人的代码书写习惯,以及沟通方面,使得代码在交换的过程中存在不同步等问题。
    - 因为五子棋的这个小程序开发,存在人人和人机对战的情况,在界面跳转和原对战模式的融合存在很大问题。两人的代码需要不断的进行交流和变更、一个好的交流必不可少。
    - 自己的电脑无线网卡有点问题,导致在机房实验的时候,电脑没法联网,只能通过U盘来进行代码传输,比较不方便。码云的上传都是在回到宿舍之后进行的,这就很伤,没有起到代码托管和团队开发的真正作用。
  • 相关阅读:
    一步步学敏捷开发:4、Scrum的3种角色
    一步步学敏捷开发:3、如何写用户故事
    一步步学敏捷开发:5. Scrum的4种会议
    一步步学敏捷开发:1、敏捷开发及Scrum介绍
    用户故事(User Story)
    对敏捷开发的一点理解
    Java学习之Iterator(迭代器)的一般用法 (转)
    希尔排序
    递归全排列字符串
    Java中equals和==的区别
  • 原文地址:https://www.cnblogs.com/ycll/p/7063034.html
Copyright © 2011-2022 走看看