day26---反射与网络编程与JFrame基础创建

反射

根据反射创建一个对象
一共有两种方式:
调用Class对象的newInstance方法
调用Constructor对象的newInstance方法

public class NewInstancePractice {
    public static void main(String[] args) throws Exception {
        // 反射 - 获取类对象的3种方式
        Class<?> aClass = Class.forName("com.mobiletrain.domain.Student");

        // 根据类对象,创建实例的第一种方式
        Object o = aClass.newInstance();

        // 根据类对象,创建实例的第二种方式
        // 获取类对象里的构造器
        // 再调用这个构造器的newInstance方法
        // Constructor<?> nonParamConstructor = aClass.getConstructor();
        // Object o1 = nonParamConstructor.newInstance();

        Constructor<?> hasParamConstructor = aClass.getConstructor(String.class, String.class, String.class, String.class, String.class, String.class);
        Object o1 = hasParamConstructor.newInstance("1", "2", "3", "4", "5", "6");

        System.out.println();
    }
}

网络编程

客户端与服务端的交互

ThreadPoolManager.java

public class ThreadPoolManager {
    private static ExecutorService pool = Executors.newFixedThreadPool(10);

    private ThreadPoolManager() {}

    public static ExecutorService getPool() {
        return pool;
    }
}

ConnectionProcessor.java

class ConnectionProcessor implements Runnable {
    private Socket accept;

    public ConnectionProcessor(Socket accept) {
        this.accept = accept;
    }

    @Override
    public void run() {
        try {
            InputStream is = accept.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);

            while (true) {
                String line = br.readLine();

                if (line == null) {
                    break;
                }
                System.out.println(line);
            }

            br.close();
            isr.close();
            is.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Server.java

public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8080);

        while (true) {
            Socket accept = serverSocket.accept();
            ConnectionProcessor processor = new ConnectionProcessor(accept);
            ThreadPoolManager.getPool().submit(processor);
        }
    }
}

Client.java

public class Client {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("localhost", 8080);

        OutputStream os = socket.getOutputStream();
        os.write("这是第一行\n这是第二行".getBytes());
        os.close();

//        socket.close();
    }
}

Java图形化编程

一般Java不会用于桌面开发,所以Swing、AWT很少用

Frame类

直译: 框架。窗口
也就是想要实现图形化编程,必须先有一个窗口

paint方法

系统会调用此方法,进行窗口绘制

练习代码

  • BasicFrame.java
public class BasicFrame extends Frame {
    public void launch() {
        // 窗口的标题
        setTitle("Tank War");

        // 窗口的位置
        setLocation(200, 200);

        // 窗口的尺寸
        setSize(500, 500);

        // 设置显示
        setVisible(true);

        // 不允许拉伸
        setResizable(false);

        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        // 画线
        g.setColor(Color.PINK);
        g.drawLine(100, 100, 200, 200);

        // 画矩形
        g.setColor(Color.ORANGE);
        g.drawRect(100, 100, 200, 200);

        // 画圆形
        g.setColor(Color.BLACK);
        g.drawOval(100, 100, 200, 200);

        // 绘制字符
    }
}
  • BasicFramePractice.java
public class BasicFramePractice {
    public static void main(String[] args) {
        BasicFrame basicFrame = new BasicFrame();
        basicFrame.launch();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值