精华内容
下载资源
问答
  • Java基础-实战300行代码实现2048游戏

    千次阅读 2018-10-10 20:11:10
    300行代码实现2048(java) 声明:1.本文章为原创文章,转载注明出处,蟹蟹~ 2.初学java,水平有限,还有很多不足和应当修正的地方,欢迎评论指点 3.CSDN和简书同步更新内容一致。(作者名也一致) 本人在开始写之前...

    Java基础-实战300行代码实现2048游戏

    声明:1.本文章为原创文章,转载注明出处,蟹蟹~
    2.初学java,水平有限,还有很多不足和应当修正的地方,欢迎评论指点
    3.CSDN和简书同步更新内容一致。(作者名也一致)

    本人在开始写之前在网上看过很多版本的2048,但令我印象深刻的不多,很多都动不动600多行,有的甚至上千,当然啦,有的写得还是非常详细的,功能也比我的多,比如计分,还有历史最高分等等…本文暂时没有写那些,只是仅仅实现了这个游戏,失败或获胜之后可以选择再玩一次和关闭。

    不修改代码的情况下(自己写的游戏想赢太简单),我没有赢过,所以就晒张失败截图???
    游戏界面

    先来张图看看大致结构:
    框架

    2048李飘1

    我借鉴了网上的一篇文章(https://blog.csdn.net/m_szqyx/article/details/75495318)
    但不是简单的ctrlc+ctrlV,数据处理(核心)和按键监听完全不一样,UI方面借鉴了他的大体框架,但他完全用图片来显示,我为了简单一点就直接把整型放在标签上了…自认为原创率百分之70以上吧。

    数据处理方面,我发现其实这四个操作相同点其实很多,但几乎所有的文章都是代码重复率比较高的上下左右四个数据处理函数,那么在数据处理方面写这四个方法是不是有捷径可寻呢??当然有啦

    上图:
    操作转化

    操作转化
    这图是否只观?思路大致为:将上下左右四个数据处理通过transpose 和reverse 两个方法转化为向左移动,让后left也可以分解为coverup和merge两个方法。

    具体这四个新加的方法的效果如下:
    函数说明

    转换函数说明
    函数说明2

    转换函数说明2
    这里就不具体给出这四个函数了,接下来看看怎么用这四个函数简化上和左的操作,至于下和右是同理,是差不多的。

    public static void up()	{
        transpose();
        coverup();
        merge();
        coverup();
        transpose();
    }
    public static void left()	{
          coverup();
          merge();
          coverup();
    
    }
    

    UI界面方面:

    //构造函数 
    public Frame() {
    //初始化窗体大小位置等
     initBasic();
    //初始化空块
     initEmptyBlocks();
    //初始化两个初始值 到block_Data数组中,并设置block_Label中对应块的图像 initData();
    //键盘监听,获取方向键执行操作
    this.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent event) {} });
    //可视化 
    setVisible(true);
    }
    

    除了将上下左右进行转换之外的细节:

    1.JFrame中纵横坐标是和数组是相反的。

    mytips:在最开始的加入标签的时候就将其进行转换

    2.在无法朝某个方向移动时不生成新的数。

    mytips:移动前将数据传到一个数组与移动后的数组对比来判断有无变化

    3.标签jlabel无法接受整型,

    mytips:用 标签名.setText(整型变量+""); 进行转换

    4.数组中的0不显示在frame窗口上

    mytips:0元素单独用:标签名.setText(" ");表示

    5.每进行一次操作都都要使整型数组中的数据与标签数组对应

    mytips:写一个updata,把整型数组传给标签数组

    6.游戏结束时如何play again

    mytips:失败时的效果如文章的第一张图片,游戏成功同理,只是那一句话不同,具体实现如下:

    失败时:

    int result = JOptionPane.showConfirmDialog(null, "竟然输了,再来一局?", "游戏结果", JOptionPane.YES_NO_OPTION);
    
    if(result == 0)	{
    
    Frame.reSetBlocks();	Frame.initData();
    
    }
    
    else	{System.exit(0);}
    

    最后,打开链接获取源代码

    http://note.youdao.com/noteshare?id=de211010710217c2ede102236b775bf5&sub=83D0B1E308E04F6583873DCEAC9E0FE8

    展开全文
  • java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码 源代码下载地址:http://www.zuidaima.com/share/1550463495146496.htm

    原文:java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码

    源代码下载地址:http://www.zuidaima.com/share/1550463495146496.htm

    java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码, 很久以前找到的一个Swing实现的俄罗斯方块,短线精悍,算法值得一看

    java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码

    经验证代码可用,确实短小精悍,值得下载。

     

    package com.zuidaima.swing.game;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.*;
    import javax.swing.Timer;
    
    /**
    *@author http://www.zuidaima.com
    **/
    public class Tetris extends JFrame {
        public Tetris() {
            Tetrisblok a = new Tetrisblok();
            addKeyListener(a);
            add(a);
        }
    
        public static void main(String[] args) {
            Tetris frame = new Tetris();
            JMenuBar menu = new JMenuBar();
            frame.setJMenuBar(menu);
            JMenu game = new JMenu("游戏");
            JMenuItem newgame = game.add("新游戏");
            JMenuItem pause = game.add("暂停");
            JMenuItem goon = game.add("继续");
            JMenuItem exit = game.add("退出");
            JMenu help = new JMenu("帮助");
            JMenuItem about = help.add("关于");
            menu.add(game);
            menu.add(help);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(220, 275);
            frame.setTitle("Tetris内测版");
            // frame.setUndecorated(true);
            frame.setVisible(true);
            frame.setResizable(false);
    
        }
    }
    
    // 创建一个俄罗斯方块类
    class Tetrisblok extends JPanel implements KeyListener {
    
        // blockType 代表方块类型
        // turnState代表方块状态
        private int blockType;
        private int score = 0;
    
        private int turnState;
    
        private int x;
    
        private int y;
    
        private int i = 0;
    
        int j = 0;
        int flag = 0;
        // 定义已经放下的方块x=0-11,y=0-21;
        int[][] map = new int[13][23];
    
        // 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵
        private final int shapes[][][] = new int[][][] {
        // i
                { { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
                        { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } },
                // s
                { { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } },
                // z
                { { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } },
                // j
                { { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
                        { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
                // o
                { { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
                // l
                { { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                        { 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
                // t
                { { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                        { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } };
    
        // 生成新方块的方法
        public void newblock() {
            blockType = (int) (Math.random() * 1000) % 7;
            turnState = (int) (Math.random() * 1000) % 4;
            x = 4;
            y = 0;
            if (gameover(x, y) == 1) {
    
                newmap();
                drawwall();
                score = 0;
                JOptionPane.showMessageDialog(null, "GAME OVER");
            }
        }
    
        // 画围墙
        public void drawwall() {
            for (i = 0; i < 12; i++) {
                map[i][21] = 2;
            }
            for (j = 0; j < 22; j++) {
                map[11][j] = 2;
                map[0][j] = 2;
            }
        }
    
        // 初始化地图
        public void newmap() {
            for (i = 0; i < 12; i++) {
                for (j = 0; j < 22; j++) {
                    map[i][j] = 0;
                }
            }
        }
    
        // 初始化构造方法
        Tetrisblok() {
            newblock();
            newmap();
            drawwall();
            Timer timer = new Timer(1000, new TimerListener());
            timer.start();
        }
    
        // 旋转的方法
        public void turn() {
            int tempturnState = turnState;
            turnState = (turnState + 1) % 4;
            if (blow(x, y, blockType, turnState) == 1) {
            }
            if (blow(x, y, blockType, turnState) == 0) {
                turnState = tempturnState;
            }
            repaint();
        }
    
        // 左移的方法
        public void left() {
            if (blow(x - 1, y, blockType, turnState) == 1) {
                x = x - 1;
            }
            ;
            repaint();
        }
    
        // 右移的方法
        public void right() {
            if (blow(x + 1, y, blockType, turnState) == 1) {
                x = x + 1;
            }
            ;
            repaint();
        }
    
        // 下落的方法
        public void down() {
            if (blow(x, y + 1, blockType, turnState) == 1) {
                y = y + 1;
                delline();
            }
            ;
            if (blow(x, y + 1, blockType, turnState) == 0) {
                add(x, y, blockType, turnState);
                newblock();
                delline();
            }
            ;
            repaint();
        }
    
        // 是否合法的方法
        public int blow(int x, int y, int blockType, int turnState) {
            for (int a = 0; a < 4; a++) {
                for (int b = 0; b < 4; b++) {
                    if (((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x
                            + b + 1][y + a] == 1))
                            || ((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x
                                    + b + 1][y + a] == 2))) {
    
                        return 0;
                    }
                }
            }
            return 1;
        }
    
        // 消行的方法
        public void delline() {
            int c = 0;
            for (int b = 0; b < 22; b++) {
                for (int a = 0; a < 12; a++) {
                    if (map[a][b] == 1) {
    
                        c = c + 1;
                        if (c == 10) {
                            score += 10;
                            for (int d = b; d > 0; d--) {
                                for (int e = 0; e < 11; e++) {
                                    map[e][d] = map[e][d - 1];
    
                                }
                            }
                        }
                    }
                }
                c = 0;
            }
        }
    
        // 判断你挂的方法
        public int gameover(int x, int y) {
            if (blow(x, y, blockType, turnState) == 0) {
                return 1;
            }
            return 0;
        }
    
        // 把当前添加map
        public void add(int x, int y, int blockType, int turnState) {
            int j = 0;
            for (int a = 0; a < 4; a++) {
                for (int b = 0; b < 4; b++) {
                    if (map[x + b + 1][y + a] == 0) {
                        map[x + b + 1][y + a] = shapes[blockType][turnState][j];
                    }
                    ;
                    j++;
                }
            }
        }
    
        // 画方块的的方法
    
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            // 画当前方块
            for (j = 0; j < 16; j++) {
                if (shapes[blockType][turnState][j] == 1) {
                    g.fillRect((j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10);
                }
            }
            // 画已经固定的方块
            for (j = 0; j < 22; j++) {
                for (i = 0; i < 12; i++) {
                    if (map[i][j] == 1) {
                        g.fillRect(i * 10, j * 10, 10, 10);
    
                    }
                    if (map[i][j] == 2) {
                        g.drawRect(i * 10, j * 10, 10, 10);
    
                    }
                }
            }
            g.drawString("score=" + score, 125, 10);
            g.drawString("抵制不良游戏,", 125, 50);
            g.drawString("拒绝盗版游戏。", 125, 70);
            g.drawString("注意自我保护,", 125, 90);
            g.drawString("谨防受骗上当。", 125, 110);
            g.drawString("适度游戏益脑,", 125, 130);
            g.drawString("沉迷游戏伤身。", 125, 150);
            g.drawString("合理安排时间,", 125, 170);
            g.drawString("享受健康生活。", 125, 190);
        }
    
        // 键盘监听
        public void keyPressed(KeyEvent e) {
            switch (e.getKeyCode()) {
            case KeyEvent.VK_DOWN:
                down();
                break;
            case KeyEvent.VK_UP:
                turn();
                break;
            case KeyEvent.VK_RIGHT:
                right();
                break;
            case KeyEvent.VK_LEFT:
                left();
                break;
            }
    
        }
    
        // 无用
        public void keyReleased(KeyEvent e) {
        }
    
        // 无用
        public void keyTyped(KeyEvent e) {
        }
    
        // 定时器监听
    /**
    *@author http://www.zuidaima.com
    **/
        class TimerListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
    
                repaint();
                if (blow(x, y + 1, blockType, turnState) == 1) {
                    y = y + 1;
                    delline();
                }
                ;
                if (blow(x, y + 1, blockType, turnState) == 0) {
    
                    if (flag == 1) {
                        add(x, y, blockType, turnState);
                        delline();
                        newblock();
                        flag = 0;
                    }
                    flag = 1;
                }
                ;
            }
        }
    }
    
    	    			
    展开全文
  • 300行代码实现零配置的Java版Web Api

    千次阅读 2017-10-08 21:15:05
    最近转战做java的项目,可是从C#过来,我简直要炸了,不管servlet还是struts都要写很多配置文件,于是就尝试着自己实现一下类似.net 中的web api的框架。OK,开干,实现起来挺简单的,只需要会反射就对了,具体细节...

          最近转战做java的项目,可是从C#过来,我简直要炸了,不管servlet还是struts都要写很多配置文件,于是就尝试着自己实现一下类似.net 中的web api的框架。OK,开干,实现起来挺简单的,只需要会反射就对了,具体细节见代码。

           首先还是来看看框架图:


         1.添加过滤器,命名HttpController

        <filter-mapping>
            <filter-name>api</filter-name>
            <url-pattern>/api/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
        </filter-mapping>

    下面是HttpController完整代码

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONArray;   //外部依赖包
    import net.sf.json.JSONObject;
    import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
    
    
    public class HttpController implements Filter {
    	private String filterKey="api";   //用于解析class和action,与配置文件保持一致 
    	private String pkg="com.eshop.api.";  //为反射类对应的包名,所以需要将所有控制器放入该包中
    	private String cntrl="Controller";    //所以添加的控制器必须要以cntrl结尾
    
    	private HttpServletResponse response;
    	private HttpServletRequest request;
    	
    	public HttpController() {
    		
    	}
    
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void doFilter(ServletRequest arg0, ServletResponse arg1,
    			FilterChain arg2) throws IOException, ServletException {
    		// TODO Auto-generated method stub
    		request = (HttpServletRequest) arg0;
    		response=(HttpServletResponse)arg1;
    		   
    		String uri = request.getRequestURI();
    		String[] classAndAction=getURLClassAndAction(uri);
    		String class_=classAndAction[0];
    		String action_=classAndAction[1];
    		
    		this.invokeAction(class_, action_);
    		
    	}
    	
    	@Override
    	public void init(FilterConfig arg0) throws ServletException {
    		// TODO Auto-generated method stub
    
    	}
    	
    	/**
    	 * 解析uri,res[0]代表控制器名,res[1]代表函数名
    	 * @param uri
    	 * @return
    	 */
    	private String[] getURLClassAndAction(String uri){
    		String[] res=new String[2];
    		String uri_split[] = uri.split("/"); // 分离
    		assert uri_split.length < 4 : "uri不满足格式要求,/api/Class/action";
    		int index = 0;
    		for (String f : uri_split) { // 获取相应下标
    			if (f.equals("api")) {
    				break;
    			}
    			index++;
    		}
    		res[0]=pkg + uri_split[index + 1]+cntrl;
    		res[1]=uri_split[index + 2];
    		return res;
    	}
    	
    	/**
    	 * 由于invoke的时候Object类型无法转到基本类型,所以需要对8种基本类型手动处理
    	 * @param type
    	 * @param value
    	 * @return
    	 */
    	private Object getPrimitiveValue(String type,String value){
    		if(type.equals("int")==true ){
    			return Integer.valueOf(value);
    		}
    		if(type.equals("long")==true ){
    			return Long.valueOf(value);
    		}
    		if(type.equals("float")==true ){
    			return Float.valueOf(value);
    		}
    		if(type.equals("double")==true ){
    			return Double.valueOf(value);
    		}
    		if(type.equals("boolean")==true ){
    			return Boolean.valueOf(value);
    		}
    		if(type.equals("byte")==true ){
    			return Byte.valueOf(value);
    		}
    		if(type.equals("short")==true ){
    			return Short.valueOf(value);
    		}
    		return value;
    	}
    	
    	
    	/**
    	 * JSON字符串转换用户自定义类型
    	 * @param isArray
    	 * @param value
    	 * @return
    	 */
    	private Object getUserTypeObj(boolean isArray,String value){
    		if(isArray==true){
    			JSONArray json = JSONArray.fromObject(value);
    			System.out.println(json.toString());
    			Object res =  JSONArray.toArray(json,Model.class);
    			System.out.println(res);
    			return res;
    		}
    		else{
    			JSONObject json = JSONObject.fromObject(value);  
    			System.out.println(json.toString());
    			Object res =  JSONObject.toBean(json,Model.class);
    			System.out.println(res);
    			return res;
    		}
    	}
    	
    	/**
    	 * 获取post中的数据流
    	 * @param request
    	 * @return
    	 */
    	private String getPostData(HttpServletRequest request){
    		int read=0;
    		StringBuffer inputb = new StringBuffer();
    		InputStream is;
    		try {
    			is = request.getInputStream();
    			InputStreamReader inputStreamReader = new InputStreamReader(is, "UTF-8");
    			while ((read=inputStreamReader.read())>=0) {
    			    inputb.append((char)read);
    			}
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println(inputb.toString());
    		return inputb.toString();
    	}
    
    	/**
    	 * 执行方法,由于没发获取参数类型列表,无法直接使用getDeclaredMethod,所以再控制器中不能有重载函数,只能遍历所有方法来匹配
    	 * @param request
    	 * @param response
    	 * @param class_
    	 * @param action_
    	 */
    	private void invokeAction(String class_,String action_){
    		LocalVariableTableParameterNameDiscoverer lvtpnd = new LocalVariableTableParameterNameDiscoverer();//用于获取函数参数名,JDK8又该方法,目前用的JDK是低版本,所以用spring框架中的方法
    		try {
    			Class<?> clazz = Class.forName(class_);
    			Method[] methods = clazz.getDeclaredMethods();
    			Class<?>[] paraTyps = null; // 参数类型列表
    			String[] paraName = null; // 参数类型名
    			Object[] values = null; // 值列表  
    
    			for (Method method : methods) {
    				if (method.getName().equals(action_) == true) {
    					paraTyps = method.getParameterTypes(); // 获取参数类型列表
    					paraName = lvtpnd.getParameterNames(method); // 获取参数名
    					values = new Object[paraTyps.length]; // 初始化值列表
    					for (int i = 0; i < paraName.length; i++) { // 获取传入参数
    						if(paraTyps[i].isPrimitive()==true||paraTyps[i].getName().equals("java.lang.String")==true){
    						    values[i] = getPrimitiveValue(paraTyps[i].getName(),request.getParameter(paraName[i]));
    						}else if(paraTyps[i].getName().equals("javax.servlet.http.HttpServletRequest")){
    							values[i]=request;
    						}else if(paraTyps[i].getName().equals("javax.servlet.http.HttpServletResponse")){
    							values[i]=response;
    						}
    						else
    							values[i] = getUserTypeObj(paraTyps[i].isArray(),getPostData(request));
    					}
    					Object obj = clazz.newInstance();
    					outResult(method.invoke(obj, values),method.getReturnType().isArray());  //执行方法并返回数据
    					return;
    				}
    			}
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InstantiationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SecurityException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IllegalArgumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InvocationTargetException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	
    	/**
    	 * 向客户端返回JSON格式数据
    	 * @param response
    	 * @param res
    	 */
    	private void outResult(Object res,boolean isArray) {
    		response.setContentType("text/json;charset=utf-8");
    		response.addHeader("Access-Control-Allow-Origin","*");
    		PrintWriter out;
    		try {
    			out = response.getWriter();
    			if(isArray==true){
    				JSONArray ja=JSONArray.fromObject(res);
    				out.println(ja.toString());
    			}else{
    				JSONObject jo = JSONObject.fromObject(res);
    				out.println(jo.toString());
    			}
    		    out.flush();
    		    out.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    }
     其中pkg这个属性需要用户手动填写,也就是用户Controller存放的完整包名
    2.添加用户控制器
    public class ShopCartController{
    	private ShopCartService scs=new ShopCartService();
    	
    	public Result<String> getShopCart(Model m){
    		Result<String> res=new Result();
    		res.Data=m.getA()+" "+m.getB();
    		res.Statue=Result.Status.Success;
    		res.Message="数据获取成功";
    		return res;
    	}
    	
    	public Result<String> getShopCart1(HttpServletRequest request,String a,int b,String c,Model[] m){
    		for(Model ml:m)
    		System.out.println(a+b+c+ml.getA()+ml.getB()+" "+ml.getD()[0].getA());
    		Result<String> res=new Result();
    		
    		request.getSession().setAttribute("goods_id", "0");
    		return res;
    	}
    	
    	public Object addShopCart(HttpServletRequest request,ShopCartDAO scDAO){
    		HttpSession session=request.getSession();
    		session.setAttribute("scDAO", scDAO);
    		return scs.addShopCart(scDAO);
    	}
    	
    	public Object getShopCart(int user_id){
    		return scs.getShopCart(user_id);
    	}
    }

    下面来说说使用规则,其实和.net的web api规则类似:
    1. 需要说明的是根据HttpControllerd的规则,用户Controller需要用户在类名后面加上Controller,当然该规则可以自行修改。
    2. 对于需要传入的参数用户只需要作为函数的参数列表即可,参数可为基本类型,也可为自定义类型。
    3. 有两个特殊参数HttpServletRequest和HttpServletResponse
    4. 对于return的数据没有具体要求
    5. 前端访问路径写法 api/ShopCart/getShopCart1?a=11&b=227&c=34839423 m参数则是post的json数据

    我觉得现在简化了很多,如果各位有兴趣可以尝试一下。

    展开全文
  • Java60行代码实现swing+mysql学生信息管理系统

    万次阅读 多人点赞 2018-01-23 17:25:50
    //相当于设置文本区组件的初始大小,并不是说一只能写0 stuInfoListJTA.setFont(stuInfoListFont); this.add(titleJL); this.add(buttonJP); this.add(listHeadJP); this.add(stuInfoListJTA); ...

    swing+mysql实现的学生信息管理系统:

    数据处理:student类。。。界面显示:swing界面。

    对数据库做增删改查的4个5个函数入下声明:

    添加学生信息:

    public boolean addStuInfo(int sNum, String sName, String sClass, String sProfessional)
    删除学生信息:

    public boolean deleteStuInfo(int sNum) 
    修改学生信息:
    public boolean modifyStuInfo(Student stu, int sNum, String sName, String sClass, String sProfessional)
    
    
    
    查询学生信息:
    public List<Student> queryAllStuInfo()
    
    
    修改学生信息所用到的子函数:查询单个学生信息
    public Student queryStuInfo(int sNum)
    连接数据库的函数:
    public Connection connectToMySql()

    ShowStuInfoFrame类的代码如下:
    package com.baidu.studentmanage;
    
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.List;
    
    import javax.swing.*;
    
    import java.sql.*;
    /**
     *
     * @author Z7M-SL7D2
     * @since 2018年1月22日21:24:27
     * 用来显示学生管理系统主界面
     */
    public class ShowStuInfoFrame extends JFrame {
    
        Student stu = new Student();
        JTextArea stuInfoListJTA = null;
    
        //对输出进行处理
        public String setStringLen(int len) {
            String string = "";
            for(int i = 0; i < 35-len; ++i) {
                string += " ";
            }
            return string;
        }
    
        /**
         * 显示所有学生信息
         */
        public void showAllStuInfo(){
            stuInfoListJTA.setText("");
            List<Student> list = stu.queryAllStuInfo();
            for(Student student:list) {
                String sNum = new Integer(student.getStuNum()).toString();
                String sName = student.getStuName();
                String sClass = student.getStuClass();
                String sProfessional = student.getStuProfessional();
                stuInfoListJTA.setText(stuInfoListJTA.getText()
                        + sNum + setStringLen(sNum.getBytes().length)
                        + sName + setStringLen(sName.getBytes().length)
                        + sClass + setStringLen(sClass.getBytes().length)
                        + sProfessional + setStringLen(sProfessional.getBytes().length) + "\n");
            }
    
        }
    
        /**
         * 构造函数
         */
        public ShowStuInfoFrame() {
            this.setSize(600, 600);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLayout(null);
    
            //界面标题部分
            JLabel titleJL = new JLabel("学生管理系统");
            Font font = new Font("微软雅黑", 1, 15);
            titleJL.setFont(font);
            titleJL.setLayout(null);
            titleJL.setBounds(250, 10, 100, 20);
    
            //按钮部分
            JPanel buttonJP = new JPanel();
            buttonJP.setLayout(null);
          //  buttonJP.setBackground(Color.blue);
            buttonJP.setBounds(0, 50, 600, 40);
    
            JButton jbAdd = new JButton("添加学生信息");
            jbAdd.setBounds(25, 10, 120, 30);
            jbAdd.setBackground(Color.gray);
    
            JButton jbDelete = new JButton("删除学生信息");
            jbDelete.setBounds(170, 10, 120, 30);
            jbDelete.setBackground(Color.gray);
    
            JButton jbModify = new JButton("修改学生信息");
            jbModify.setBounds(315, 10, 120, 30);
            jbModify.setBackground(Color.gray);
    
            JButton jbQuery = new JButton("查询学生信息");
            jbQuery.setBounds(455, 10, 120, 30);
            jbQuery.setBackground(Color.gray);
    
          //  buttonJP.setLayout(new FlowLayout());
            buttonJP.add(jbAdd);
            buttonJP.add(jbDelete);
            buttonJP.add(jbModify);
            buttonJP.add(jbQuery);
    
            JPanel listHeadJP = new JPanel();
            listHeadJP.setBackground(Color.lightGray);
            listHeadJP.setLayout(null);
            listHeadJP.setBounds(0, 120, 580, 30);
    
            JLabel numHeadJL = new JLabel(" 学  号");
            numHeadJL.setBackground(Color.gray);
            numHeadJL.setBounds(20, 0, 150, 25);
    
            JLabel nameHeadJL = new JLabel("姓  名");
            nameHeadJL.setBounds(170, 0, 150, 25);
    
            JLabel classHeadJL = new JLabel("班  级");
            classHeadJL.setBounds(320, 0, 150, 25);
    
            JLabel professionalHeadJL = new JLabel("专  业");
            professionalHeadJL.setBounds(470, 0, 150, 25);
    
            listHeadJP.add(numHeadJL);
            listHeadJP.add(nameHeadJL);
            listHeadJP.add(classHeadJL);
            listHeadJP.add(professionalHeadJL);
    
            Font stuInfoListFont = new  Font("微软雅黑", 0, 13);
            stuInfoListJTA = new JTextArea(20,20);
            stuInfoListJTA.setBounds(10, 152, 560, 400);
            stuInfoListJTA.setBorder (BorderFactory.createEmptyBorder (1,1,1,5));
            stuInfoListJTA.setColumns (20);
            stuInfoListJTA.setRows (20);//相当于设置文本区组件的初始大小,并不是说一行只能写0
            stuInfoListJTA.setFont(stuInfoListFont);
    
            this.add(titleJL);
            this.add(buttonJP);
            this.add(listHeadJP);
            this.add(stuInfoListJTA);
    
            showAllStuInfo();
            this.setVisible(true);
    
            //添加学生信息
            jbAdd.addMouseListener(new MouseAdapter(){
                //匿名内部类使用方法的临时变量需要提前,负责会让你改为final,改为final是为了延长变量的声明周期
                JTextField nameJTF = null;
                JTextField numJTF = null;
                JTextField classJTF = null;
                JTextField professionalJTF = null;
                @Override
                public void mouseClicked(MouseEvent e) {
                    final JFrame addJF = new JFrame();
                    addJF.setSize(300, 400);
                    addJF.setBackground(Color.gray);
                    addJF.setLocationRelativeTo(null);
                    addJF.setVisible(true);
                    addJF.setLayout(new FlowLayout());
                    JLabel numJL = new JLabel("学号:");
                    numJTF = new JTextField(20);
                    JLabel nameJL = new JLabel("姓名:");
                    nameJTF = new JTextField(20);
                    JLabel classJL = new JLabel("班级:");
                    classJTF = new JTextField(20);
                    JLabel professionalJL = new JLabel("专业:");
                    professionalJTF = new JTextField(20);
                    //addJF.dispose();//销毁子窗口
                    addJF.add(numJL);
                    addJF.add(numJTF);
                    addJF.add(nameJL);
                    addJF.add(nameJTF);
                    addJF.add(classJL);
                    addJF.add(classJTF);
                    addJF.add(professionalJL);
                    addJF.add(professionalJTF);
                    JButton addJB = new JButton("添加");
                    addJF.add(addJB);
                    addJB.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                            Integer snumAddI = new Integer(numJTF.getText().toString());
                            int snumAdd = snumAddI;
                            String snameAdd = nameJTF.getText();
                            String sclassAdd = classJTF.getText();
                            String sprofessionalAdd = professionalJTF.getText();
                            //输入的信息为空的处理
                            if(snumAdd <0 | snameAdd == null | sclassAdd == "" | sprofessionalAdd == "") {
                                JFrame tipJF = new JFrame("提示");
                                tipJF.setVisible(true);
                                tipJF.setSize(200,100);
                                tipJF.setLocationRelativeTo(null);
                                JLabel tipJL = new JLabel("请填入了所有的信息之后再点击提交");
                                tipJF.add(tipJL);
                            }else {
                                    stu = new Student();
                                    stu.addStuInfo(snumAdd, snameAdd, snameAdd, sprofessionalAdd);
                                    addJF.dispose();
                                    JFrame addSuccessfulJF = new JFrame("提示");
                                    addSuccessfulJF.setLocationRelativeTo(null);
                                    addSuccessfulJF.setSize(260, 100);
                                    addSuccessfulJF.setVisible(true);
                                    addSuccessfulJF.setLayout(new FlowLayout());
                                    JLabel SuccessfulJL = new JLabel("添加学生信息成功!");
                                    addSuccessfulJF.add(SuccessfulJL);
                            }
                        }
    
                    });
                }
            });
    
        //删除学生信息
            jbDelete.addMouseListener(new MouseAdapter() {
                JTextField numJTF = null;
                @Override
                public void mouseClicked(MouseEvent e) {
                    final JFrame deleteJF = new JFrame("删除学生信息");
                    deleteJF.setLayout(new FlowLayout());
                    deleteJF.setSize(300, 80);
                    deleteJF.setVisible(true);
                    deleteJF.setLocationRelativeTo(null);
                    JLabel numJL = new JLabel("学号:");
                    numJTF = new JTextField(15);
                    JButton numJB = new JButton("提交");
                    deleteJF.add(numJL);
                    deleteJF.add(numJTF);
                    deleteJF.add(numJB);
                    numJB.addMouseListener(new MouseAdapter(){
                        @Override
                        public void mouseClicked(MouseEvent e) {
                                    Integer sNumI = new Integer(numJTF.getText().toString());
                                    stu.deleteStuInfo(sNumI);
                                    deleteJF.dispose();
                                    JFrame deleteSuccessfulJF = new JFrame("提示");
                                    deleteSuccessfulJF.setLocationRelativeTo(null);
                                    deleteSuccessfulJF.setSize(260, 100);
                                    deleteSuccessfulJF.setVisible(true);
                                    deleteSuccessfulJF.setLayout(new FlowLayout());
                                    JLabel SuccessfulJL = new JLabel("删除学生信息成功!");
                                    deleteSuccessfulJF.add(SuccessfulJL);
                        }
                    });
                }
            });
    
            //修改学生信息
            jbModify.addMouseListener(new MouseAdapter(){
                JTextField num1JTF = null;
                @Override
                public void mouseClicked(MouseEvent e) {
                    final JFrame modifyJF = new JFrame("修改学生信息");
                    modifyJF.setSize(300, 80);
                    modifyJF.setLocationRelativeTo(null);
                    modifyJF.setLayout(new FlowLayout());
                    modifyJF.setVisible(true);
                    JLabel numJL = new JLabel("学号:");
                    num1JTF = new JTextField(15);
                    JButton numJB = new JButton("提交");
                    modifyJF.add(numJL);
                    modifyJF.add(num1JTF);
                    modifyJF.add(numJB);
                    numJB.addMouseListener(new MouseAdapter() {
                        JTextField numJTF = null;
                        JTextField nameJTF = null;
                        JTextField classJTF = null;
                        JTextField professionalJTF = null;
                        String tempNum = null;
                        String tempName = null;
                        String tempClass = null;
                        String tempProfessional = null;
                        Connection conn = null;
                        @Override
                        public void mouseClicked(MouseEvent e) {
    
    //
    //显示学号对应的学生信息///
    /
                            final JFrame modifyJF1 = new JFrame();
                            modifyJF1.setSize(300, 400);
                            modifyJF1.setBackground(Color.gray);
                            modifyJF1.setLocationRelativeTo(null);
                            modifyJF1.setVisible(true);
                            modifyJF1.setLayout(new FlowLayout());
                            JLabel numJL = new JLabel("学号:");
                            numJTF = new JTextField(20);
                            JLabel nameJL = new JLabel("姓名:");
                            nameJTF = new JTextField(20);
                            JLabel classJL = new JLabel("班级:");
                            classJTF = new JTextField(20);
                            JLabel professionalJL = new JLabel("专业:");
                            professionalJTF = new JTextField(20);
                            modifyJF1.add(numJL);
                            modifyJF1.add(numJTF);
                            modifyJF1.add(nameJL);
                            modifyJF1.add(nameJTF);
                            modifyJF1.add(classJL);
                            modifyJF1.add(classJTF);
                            modifyJF1.add(professionalJL);
                            modifyJF1.add(professionalJTF);
    
                            //查询学生信息
                            Integer sNum = new Integer(num1JTF.getText().toString());
                            final Student stuRet = stu.queryStuInfo(sNum);
    
                            numJTF.setText(new Integer(stuRet.getStuNum()).toString());
                            nameJTF.setText(stuRet.getStuName());
                            classJTF.setText(stuRet.getStuClass());
                            professionalJTF.setText(stuRet.getStuProfessional());
    
    //
    //提交修改后的学生信息///
    /
                            JButton submitJB = new JButton("提交修改");
                            modifyJF1.add(submitJB);
                            submitJB.addMouseListener(new MouseAdapter() {
                                @Override
                                public void mouseClicked(MouseEvent e) {
                                    String sName = nameJTF.getText();
                                    String sClass = classJTF.getText();
                                    String sProfessional = professionalJTF.getText();
                                    stu.modifyStuInfo(stuRet, stuRet.getStuNum(), sName, sClass, sProfessional);
                                    modifyJF1.dispose();
                                    JFrame updateSucessfulJF = new JFrame("提示");
                                    updateSucessfulJF.setLocationRelativeTo(null);
                                    updateSucessfulJF.setSize(260, 100);
                                    updateSucessfulJF.setVisible(true);
                                    updateSucessfulJF.setLayout(new FlowLayout());
                                    JLabel SuccessfulJL = new JLabel("修改学生信息成功!");
                                    updateSucessfulJF.add(SuccessfulJL);
                                }
    
                            });
                            modifyJF.dispose();
                        }
                    });
                }
            });
    
            //查询学生信息
            jbQuery.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    //显示所有的学生信息
                    showAllStuInfo();
                }
            });
        }
        public static void main(String[] args) {
            new ShowStuInfoFrame();
        }
    }
    

    Student类的代码如下:
    package com.baidu.studentmanage;
    
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Student {
        private int stuNum;//学号
        private String stuName;//姓名
        private String stuClass;//班级
        private String stuProfessional;//专业
    
        public Student() {
        }
    
        public Student(int stuNum, String stuName, String stuClass,
                       String stuProfessional) {
            super();
            this.stuNum = stuNum;
            this.stuName = stuName;
            this.stuClass = stuClass;
            this.stuProfessional = stuProfessional;
        }
    
        public int getStuNum() {
            return stuNum;
        }
    
        public void setStuNum(int stuNum) {
            this.stuNum = stuNum;
        }
    
        public String getStuName() {
            return stuName;
        }
    
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
    
        public String getStuClass() {
            return stuClass;
        }
    
        public void setStuClass(String stuClass) {
            this.stuClass = stuClass;
        }
    
        public String getStuProfessional() {
            return stuProfessional;
        }
    
        public void setStuProfessional(String stuProfessional) {
            this.stuProfessional = stuProfessional;
        }
    
        public Connection connectToMySql() {
            try {
                String driver = "com.mysql.jdbc.Driver";
                String url = "jdbc:mysql://localhost/student?useUnicode=true&characterEncoding=UTF-8&user="
                        + "root&password=123456";
                Class.forName(driver).newInstance();
                Connection connection = DriverManager.getConnection(url);
                return connection;
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("数据库连接出错");
            }
            return null;
        }
    
        public boolean addStuInfo(int sNum, String sName, String sClass, String sProfessional) {
            String sqlInsert = "insert into student values(" + sNum + ",'" + sName + "','" + sClass + "','" + sProfessional + "')";
            System.out.println(sNum + sName + sClass + sProfessional);
            Connection conn = connectToMySql();
            PreparedStatement ps = null;
            try {
                ps = conn.prepareStatement(sqlInsert);
                ps.executeUpdate();
                return true;
            } catch (Exception e1) {
                e1.printStackTrace();
                System.out.println("添加学生信息失败!");
                return false;
            } finally {
                try {
                    ps.close();
                    conn.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        }
    
        public boolean deleteStuInfo(int sNum) {
    
            Connection conn = connectToMySql();
            String deleteSQL = "delete from student where stuNum=" + sNum;
            PreparedStatement ps = null;
            try {
                ps = conn.prepareStatement(deleteSQL);
                ps.executeUpdate();
                return true;
            } catch (Exception e3) {
                e3.printStackTrace();
                System.out.println("数据库语句检查或执行出错");
                return false;
            } finally {
                try {
                    ps.close();
                    conn.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        }
    
        public Student queryStuInfo(int sNum) {
            Student stu = new Student();
            String querySql = "select * from student where stuNum="+sNum;
            Connection conn  = connectToMySql();
            try {
                Statement statement = conn.createStatement();
                ResultSet rs = statement.executeQuery(querySql);
                while(rs.next()) {
                    stu.stuNum = new Integer(rs.getString("stuNum"));
                    stu.stuName = rs.getString("stuName");
                    stu.stuClass = rs.getString("stuClass");
                    stu.stuProfessional = rs.getString("stuProfessional");
                }
                return stu;
            } catch (SQLException e1) {
                e1.printStackTrace();
                return null;
    
            }
        }
    
        //修改学生信息
        public boolean modifyStuInfo(Student stu, int sNum, String sName, String sClass, String sProfessional) {
    
            Connection conn = connectToMySql();
    
            //信息有改动才提交
            if(false == sName.equals(stu.stuName)) {
                String updateSql = "update student set stuName='"+sName+"' where stuNum=" + stu.stuNum;
                try {
                    PreparedStatement ps = conn.prepareStatement(updateSql);
                    ps.executeUpdate();
                    ps.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                    return false;
                }
            }
    
            if(false == sClass.equals(stu.stuClass)) {
                String updateSql = "update student set stuClass='"+sClass+"' where stuNum=" + stu.stuNum;
                try {
                    PreparedStatement ps = conn.prepareStatement(updateSql);
                    ps.executeUpdate();
                    ps.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                    return false;
                }
            }
            if(false == sProfessional.equals(stu.stuProfessional)) {
                String updateSql = "update student set stuProfessional='"+sProfessional+"' where stuNum=" + stu.stuNum;
                try {
                    PreparedStatement ps = conn.prepareStatement(updateSql);
                    ps.executeUpdate();
                    ps.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                    return false;
                }
            }
            return true;
        }
    
        public List<Student> queryAllStuInfo() {
            List<Student> stuList = new ArrayList<Student>();
            Student stu = null;
            ResultSet queryRS = null;
            Statement queryStatement = null;
            Connection queryConn = null;
            try{
                queryConn = connectToMySql();
                queryStatement = queryConn.createStatement();
                String sqlQuery = "select * from student";
                queryRS = queryStatement.executeQuery(sqlQuery);
                while(queryRS.next()) {
                    stu = new Student();
                    stu.stuNum = new Integer(queryRS.getString("stuNum"));
                    stu.stuName = queryRS.getString("stuName");
                    stu.stuClass = queryRS.getString("stuClass");
                    stu.stuProfessional = queryRS.getString("stuProfessional");
                    stuList.add(stu);
                }
                return stuList;
            }catch(Exception e2) {
                e2.printStackTrace();
                return null;
            }finally{
                try {
                    queryRS.close();
                    queryStatement.close();
                    queryConn.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
    
    
    



    
    



    展开全文
  • 最详细的Java象棋对弈系统实现。带你敲每一行代码,帮你解释每一条语句。学完本课程后,做其他棋类游戏,相信你也能独自完成。 从构思到实现再到具体录制,数周的时间的辛苦,希望能给你带来编程的快乐。
  • java 计算器 仅300多行代码

    千次阅读 2012-09-21 16:43:19
    完整源码:http://yuncode.net/code/c_505aad36d50a25   功能还算比较完善,效果图:     另外有个js的,功能更强大! 完整源码:http://yuncode.net/code/c_50399cc32f8ab43 ...效果图:
  • Java的GUI代码编写

    千次阅读 2019-08-25 10:13:15
    Java的GUI代码编写 AWT  所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Container(容器)在图形界面里面是一种可以...
  • Java学习代码合集

    万次阅读 多人点赞 2018-08-22 22:39:15
    其实我学习java最根本的原因是:我是一个挺关注外在的人,虽然是个程序员,所以我很喜欢写出那些带有漂亮的界面的程序,因为C总是控制台,我不是很喜欢,在这份java代码合集中,我会记录自己学习Java界面化编程的...
  • Java 记事本代码

    千次阅读 2010-11-27 16:22:00
    Java 记事本源代码
  • 标题:java课程设计简易计算器源代码 JAVA代码有解析 免费分享 先言 这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务...
  • @Override public void onAccessibilityEvent(AccessibilityEvent event) { String className = event.getClassName().toString(); switch (event.getEventType()) { //通知栏 case AccessibilityEvent.TYPE_...
  • java日历代码

    万次阅读 2007-12-04 21:55:00
    下面是一本书上的java日历程序代码。很具有实用性。package example;import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event....
  • 让我想起小时候玩过的游戏俄罗斯方块…不要说我脑回路不正常,虽然没有现在这些游戏的精美画面,但是充满着满满的回忆在里面,那么用 JAVA 如何写俄罗斯方块呢?现在就分享给大家 JAVA开发游戏 俄罗斯方块的思路!有...
  • JAVA代码Review

    千次阅读 2018-03-28 11:08:45
    代码review是指在软件开发过程中,通过对源代码进行系统性检查来确认代码实现的质量保证机制 为什么不做代码Review? ​业务需求大,工作时间紧张 项目小,协作的人少,没必要 为什么要做代码Review? 提高...
  • JAVA记事本源代码 收藏

    万次阅读 2009-05-24 23:01:00
    JAVA记事本源代码 import java.awt.*; import java.awt.event.*; import java.text.*; import java.util.*; import java.io.*; import javax.swing.undo.*; import javax.swing.*; import javax.swing.event.*; ...
  • java常用代码架构示例

    千次阅读 2017-11-12 18:32:25
    1、前言本文针对特定业务,...业务场景:业务方不定时会产生很多文件,这些文件需要我们处理,文件的路径会通过shell推送到数据库中,业务代码会一直监听数据库中是否有可以读取的文件,如果有则读取文件,并处理每一
  • java登录界面代码

    千次阅读 2013-07-12 17:04:03
    //登录界面 ...import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.List; import com.DateSystem.*; public class Landing extends JFrame imple
  • java聊天室代码

    千次阅读 2007-11-05 13:00:00
    import java.applet.*; import java.awt.*; import java.io.*; import java.net.*; import java.awt.event.*; public class ChatClient extends Applet{ protected boolean loggedIn;//登入状态 protected Frame cp;...
  • 今天给大家分享一位大牛写的魔方案例,是用JavaScript写的,去找工作特意做了一个300行代码,找了份15K的工作,看完不得不跪拜大佬,我把大佬的代码也COPY了一份,运行了一下也没有发现BUG,分享给头条上的小伙伴...
  • @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyService { String value() default ""; }
  • java打印代码执行耗时

    千次阅读 2019-07-16 19:31:36
    代码开发中,常常需要看代码的执行效率,必须直观的看到某个循环消耗的多少时间,进而针对性的优化,有两种方式。 1.使用System.currentTimeMillis()方法 打印代码开始的执行时间和结束的时间,中间的时间差就是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,581
精华内容 27,432
关键字:

java300行代码

java 订阅