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盘来进行代码传输,比较不方便。码云的上传都是在回到宿舍之后进行的,这就很伤,没有起到代码托管和团队开发的真正作用。
  • 相关阅读:
    poj 2763 Housewife Wind
    hdu 3966 Aragorn's Story
    poj 1655 Balancing Act 求树的重心
    有上下界的网络流问题
    URAL 1277 Cops and Thieves 最小割 无向图点带权点连通度
    ZOJ 2532 Internship 网络流求关键边
    ZOJ 2760 How Many Shortest Path 最大流+floyd求最短路
    SGU 438 The Glorious Karlutka River =) 拆点+动态流+最大流
    怎么样仿写已知网址的网页?
    5-10 公路村村通 (30分)
  • 原文地址:https://www.cnblogs.com/ycll/p/7063034.html
Copyright © 2011-2022 走看看