AWT

2.1、AWT介绍

  • 其包含了很多的类和接口。

  • 元素:窗口,按钮,文本框。

  • Java.awt:

2.2、组件和容器

1、Frame

代码:

package com.edwin.lession01;
import java.awt.*;
//GUI第一个界面
/*** @author EdwinD* @create 2020.08.16 上午 10:03* @desc **/
public class TextFrame1 {public static void main(String[] args) {//        Frame,JDK,查看源码Frame frame = new Frame("My First Java 图形界面");//        设置窗口可见性,无关于窗口大小.frame.setVisible(true);//        设置窗口大小frame.setSize(777, 777);//        设置背景颜色frame.setBackground(new Color(77,77,77));//        设置初始位置frame.setLocation(777,77);//        控制窗口大小是否可改变,默认为True,即可以改变。frame.setResizable(false);}
}

输出效果:

缺点:

此时的窗口无法关闭,只能通过IDEA停止代码,才可以关闭整个窗口。

封装后多窗口输出:

代码2.0:

package com.edwin.lession01;
import java.awt.*;
public class TextFrame2 {public static void main(String[] args) {//        展示多个窗口newnew MyFrame(77, 77, 350, 350, Color.blue);new MyFrame(77, 477, 350, 350, Color.red);new MyFrame(477, 77, 350, 350, Color.green);new MyFrame(477, 477, 350, 350, Color.gray);}static class MyFrame extends Frame{static int id = 0;//可能存在多个窗口,在此创造一个计数器.public MyFrame(int x, int y, int w, int h,Color color) {super("MyFrame+" + (++id));setVisible(true);setBounds(x, y, w, h);setBackground(color);}}
}

输出2.0:

2、Panel

解决了关闭的小问题。

**注:**Frame在add一个Panel的时候,使用的是frame.add(Component comp),这是因为Panel类extends了Container,而Container类extends了Component。

监听器小剧透

  • 添加监听事件,使用窗口上方的小叉叉进行关闭.调用System.exit(0).

对于目前所编写的面板,窗口,都是无法直接通过点击上方的小叉进行关闭的,这里需要用到一些后面的监听器的内容进行功能的实现。

1.常规情况下的监听器:

frame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {}@Overridepublic void windowClosing(WindowEvent e) {}@Overridepublic void windowClosed(WindowEvent e) {}@Overridepublic void windowIconified(WindowEvent e) {}@Overridepublic void windowDeiconified(WindowEvent e) {}@Overridepublic void windowActivated(WindowEvent e) {}@Overridepublic void windowDeactivated(WindowEvent e) {}
});

但是这里使用到的监听器是全部的,太过于全面,我们只需要里面的部分监听器进行工作即可。因此,我们可以尝试调用其子类:

frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {//      结束程序System.exit(0);}
});
  • System.exit(0):正常关闭;System.exit(1):异常关闭.其关闭对象是Java程序。

效果:

2.3、布局管理器

  • 流式布局

代码:

package com.edwin.lession01;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.16 下午 09:29* @desc**/
public class TextFlowLayout {public static void main(String[] args) {Frame frame = new Frame();//        尝试组件:按钮。Button button1 = new Button("Button1");Button button2 = new Button("Button2");Button button3 = new Button("Button3");//        设置为流式布局,默认为居中.frame.setLayout(new FlowLayout());
//        frame.setLayout(new FlowLayout(FlowLayout.LEFT));
//        frame.setLayout(new FlowLayout(FlowLayout.RIGHT));frame.setSize(277, 277);frame.add(button1);frame.add(button2);frame.add(button3);frame.setVisible(true);}
}

效果:

不论如何拖动,三个按钮都会是居中显示。

  • 东西南北中布局

布局思想原理:

代码:

package com.edwin.lession01;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.16 下午 09:58* @desc**/
public class TextBorderLayout {public static void main(String[] args) {Frame frame = new Frame("TextBorderLayout");Button east = new Button("East");Button west = new Button("West");Button north = new Button("North");Button south = new Button("South");Button center = new Button("Center");frame.add(center,BorderLayout.CENTER);frame.add(east,BorderLayout.EAST);frame.add(west,BorderLayout.WEST);frame.add(north,BorderLayout.NORTH);frame.add(south,BorderLayout.SOUTH);frame.setSize(277, 277);frame.setVisible(true);}
}

输出效果:

  • 表格布局

代码:

package com.edwin.lession01;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.16 下午 10:12* @desc**/
public class TextGridLayout {public static void main(String[] args) {Frame frame = new Frame("TextGridLayout");Button but1 = new Button("but1");Button but2 = new Button("but2");Button but3 = new Button("but3");Button but4 = new Button("but4");Button but5 = new Button("but5");Button but6 = new Button("but6");Button but7 = new Button("but7");frame.setLayout(new GridLayout(3, 3));frame.add(but1);frame.add(but2);frame.add(but3);frame.add(but4);frame.add(but5);frame.add(but6);frame.add(but7);frame.setSize(277, 277);frame.setVisible(true);}
}

输出:

2.4、课堂练习

package com.edwin.lession01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.16 下午 10:21* @desc**/
public class TextLayout {public static void main(String[] args) {Frame frame = new Frame("TextLayout");Panel panel1 = new Panel(new BorderLayout());Panel panel2 = new Panel(new GridLayout(2,1));Panel panel3 = new Panel(new BorderLayout());Panel panel4 = new Panel(new GridLayout(2,2));frame.setVisible(true);frame.setBackground(Color.blue);frame.setBounds(500, 500, 400, 300);frame.setResizable(false);frame.setLayout(new GridLayout(2,1));panel1.add(new Button("WEST-1"),BorderLayout.WEST);panel1.add(new Button("EAST-1"), BorderLayout.EAST);panel2.add(new Button("Cen1"));panel2.add(new Button("Cen2"));panel1.add(panel2,BorderLayout.CENTER);panel3.add(new Button("WEST-2"),BorderLayout.WEST);panel3.add(new Button("EAST-2"), BorderLayout.EAST);for (int i = 0; i < 4; i++) {panel4.add(new Button("for-" + i));}panel3.add(panel4, BorderLayout.CENTER);frame.add(panel1);frame.add(panel3);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}

输出:

小结

(1)Frame是一个顶级窗口。

(2)Panel无法单独显示,必须添加到某一个容器中。

(3)布局管理器:

​ - 流式布局

​ - 东西南北中布局

​ - 表格布局

(4)每一个元素的大小,定位,背景色,可见性以及是否使用监听。

2.5、事件监听

所谓事件监听,就是指当某个事情发生的时候,应该做出何种反应。

1.单一监听

代码:

package com.edwin.lession02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.17 下午 01:30* @desc**/
public class TextActionEvent<implement> {public static void main(String[] args) {//        初始化,目标:按下按钮,发生一些神奇的事情。Frame frame = new Frame("TextActionEvent");Button button = new Button();//        因为,addActionListener需要一个ActionListener,所以,我们自己要创建一个ActionListenerMyActionListener myActionListener = new MyActionListener();button.addActionListener(myActionListener);frame.setVisible(true);frame.setBounds(577, 577, 377, 377);frame.add(button);//关闭窗口windowClose(frame);}//窗口关闭事件private static void windowClose(Frame frame){frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}class MyActionListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("Push the Button.");}
}

输出:

2.多按钮同时监听

代码:

package com.edwin.lession02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.17 下午 01:47* @desc**/
public class TextActionTwo {public static void main(String[] args) {//        两个按钮,实现同一个监听.
//        开始 & 停止Frame frame = new Frame("Start-Stop");Button button1 = new Button("Start");Button button2 = new Button("Stop");frame.pack();frame.setVisible(true);frame.setBounds(377, 377, 277, 277);//        可以显示的定义触发会返回的命令,如果不显示定义,则会走默认的值!
//        可以多个按钮只写一个监听类button1.setActionCommand("Start-Button");button2.setActionCommand("Stop-Button");MyActionListener2 myActionListener2 = new MyActionListener2();button1.addActionListener(myActionListener2);button2.addActionListener(myActionListener2);frame.add(button1, BorderLayout.NORTH);frame.add(button2, BorderLayout.SOUTH);windowClose(frame);}private static void windowClose(Frame frame) {frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}
class MyActionListener2 implements ActionListener{//    e.getActionCommand()获得按钮信息.@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了,消息内容为:"+e.getActionCommand());}
}

输出:

2.6、输入框 TextFile 及监听

此功能用于类似于qq聊天的交流输入框,可以实现在肯本框中输入内容,在后台控制器中显示。

代码:

package com.edwin.lession02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.17 下午 05:31* @desc**/
public class TextTextFile {public static void main(String[] args) {//        启动MyFrame myFrame = new MyFrame();windowClose(myFrame);}private static void windowClose(Frame frame){frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}class MyFrame extends Frame {public MyFrame() {TextField textField = new TextField();add(textField);//      监听此文本框的输入文字,MyActionListener3 myActionListener3 = new MyActionListener3();//        按下Enter就会触发这个输入框的事件textField.addActionListener(myActionListener3);//      设置替换编码,输入的内容被 setEchoChar('这里');的"这里"代替.textField.setEchoChar('!');setVisible(true);setBounds(377,377,277,277);}
}class MyActionListener3 implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {TextField textFile = (TextField) e.getSource();System.out.println("输入框显示的为:\n"+textFile.getText());
//        设置清空的反馈.每次回车后,会自动用""代替原来输入的内容,这里不可以用null,
//        因为null是一个对象,而""中的空字符是一个字符串textFile.setText("");}
}

输出效果:

2.7、组合+内部类复习—>计算器

践行OOP原则:组合大于继承。

class A extends B{//正常继承,A有B的所有功能。
}
class A{public B b;//这就是组合的模式,可以减小耦合.
}

老式代码:

package com.edwin.lession02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.18 上午 07:28* @desc**/
public class TextCalculator {public static void main(String[] args) {Calculator calculator = new Calculator();windowClose(calculator);}private static void windowClose(Frame frame){frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}//计算器类
class Calculator extends Frame {public Calculator() {//        三个文本框TextField num1 = new TextField(10);//字符数TextField num2 = new TextField(10);//字符数TextField num3 = new TextField(20);//字符数
//        一个按钮Button button = new Button("=");button.addActionListener(new MyCalculatorListener(num1,num2,num3));
//        一个标签Label label = new Label("+");
//        布局setLayout(new FlowLayout());add(num1);add(label);add(num2);add(button);add(num3);setVisible(true);pack();setBounds(377,377,300,200);}
}//监听器类
class MyCalculatorListener implements ActionListener {private final TextField num1, num2, num3;//    获取三个变量public MyCalculatorListener(TextField num1, TextField num2, TextField num3) {this.num1 = num1;this.num2 = num2;this.num3 = num3;}@Overridepublic void actionPerformed(ActionEvent e) {//        1.获得加数,被加数int n1 = Integer.parseInt(num1.getText());int n2 = Integer.parseInt(num2.getText());
//        2.将两个值加法运算后,放到第三个框中,num3.setText(""+(n1+n2));
//        3.清理前两个框中的数字num1.setText("");num2.setText("");}
}

输出:

新式·面向对象·代码:

package com.edwin.lession02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.18 上午 07:28* @desc**/
public class TextCalculatorNew {public static void main(String[] args) {Calculator calculator = new Calculator();windowClose(calculator);}private static void windowClose(Frame frame){frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}//计算器类
class Calculator2 extends Frame {TextField num1, num2, num3;public Calculator2() {//        三个文本框
//        一个按钮
//        一个标签TextField num1 = new TextField(10);//字符数TextField num2 = new TextField(10);//字符数TextField num3 = new TextField(20);//字符数Label label = new Label("+");Button button = new Button("=");
//        监听事件button.addActionListener(new MyCalculatorListener2(this));
//        布局setLayout(new FlowLayout());add(num1);add(label);add(num2);add(button);add(num3);setVisible(true);pack();setBounds(377, 377, 300, 200);}
}//监听器类
class MyCalculatorListener2 implements ActionListener {Calculator2 calculator2 = null;public MyCalculatorListener2(Calculator2 calculator) {this.calculator2 = calculator;}@Overridepublic void actionPerformed(ActionEvent e) {//        1.获得加数,被加数int n1 = Integer.parseInt(calculator2.num1.getText());int n2 = Integer.parseInt(calculator2.num2.getText());
//        2.将两个值加法运算后,放到第三个框中,calculator2.num3.setText("" + (n1 + n2));
//        3.清理前两个框中的数字calculator2.num1.setText("");calculator2.num2.setText("");}
}

输出:

2.8、画笔

代码:

package com.edwin.lession03;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.18 上午 11:14* @desc**/
public class TextPaint {public static void main(String[] args) {MyPaint myPaint = new MyPaint();myPaint.loadFrame();windowClose(myPaint);}private static void windowClose(Frame frame) {frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}class MyPaint extends Frame {@Overridepublic void paint(Graphics g) {//        画笔,颜料,画啥.g.setColor(Color.blue);
//        空心的圆g.drawOval(100, 100, 100, 100);
//        实心的圆g.fillOval(100, 300, 100, 100);g.setColor(Color.GRAY);g.fillRect(300, 300, 100, 100);//        养成习惯:画笔用完之后,将其还原至最初的颜色.}public void loadFrame() {setBounds(277, 277, 677, 577);setVisible(true);}

输出:

2.9、窗口监听

Eg1,普通使用举例

代码:

package com.edwin.lession03;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.18 下午 05:02* @desc**/
public class TextWindow {public static void main(String[] args) {new WindowFrame();}
}class WindowFrame extends Frame {public WindowFrame(){setBackground(Color.black);setBounds(377, 377, 277, 277);setVisible(true);//        方法一对应的内部代码:
//        addWindowListener(new MyWindowListener());//        方法二:推荐的方法。
//        匿名内部类,可以取代方法一this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("你点击了关闭的“X”");setVisible(false);System.exit(0);}});}
}//    方法一:
//    内部类,非静态。
/*class MyWindowListener extends WindowAdapter {@Overridepublic void windowClosing(WindowEvent e) {
//            隐藏窗体,并不关闭。setVisible(false);
//            正常退出,System.exit(0);}}
}
*/

输出:

Eg2:

窗口激活,窗口关闭。

代码:

package com.edwin.lession03;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.18 下午 05:02* @desc**/
public class TextWindow {public static void main(String[] args) {new WindowFrame();}
}class WindowFrame extends Frame {public WindowFrame(){setBackground(Color.black);setBounds(377, 377, 277, 277);setVisible(true);//        方法二:推荐的方法。
//        匿名内部类,可以取代方法一this.addWindowListener(new WindowAdapter() {@Overridepublic void windowActivated(WindowEvent e) {System.out.println("窗口激活了");WindowFrame source = (WindowFrame) e.getSource();source.setTitle("窗口激活了");}@Overridepublic void windowClosing(WindowEvent e) {System.out.println("你点击了关闭的“X”");setVisible(false);System.exit(0);}});}
}

输出:

2.10、鼠标监听

目的:想要实现鼠标进行画画。

思路:

代码:

package com.edwin.lession03;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;
/*** @author EdwinD* @create 2020.08.18 上午 11:39* @desc 测试鼠标监听事件**/
public class TextMouseListener {public static void main(String[] args) {MyFrame myFrame = new MyFrame("画图");windowClose(myFrame);}private static void windowClose(Frame frame) {frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}class MyFrame extends Frame {//    思路:
//    1.画画需要画笔.
//    2.需要监听鼠标此刻的位置所在.
//    3.需要有集合来存储这个点.ArrayList points;public MyFrame(String title) {super(title);setBounds(277, 277, 377, 377);setVisible(true);
//        鼠标点击存放点points = new ArrayList<>();
//        此窗口的鼠标监听器this.addMouseListener(new MouseListener());}@Overridepublic void paint(Graphics g) {//        画画,鼠标的监听事件Iterator iterator = points.iterator();while (iterator.hasNext()) {Point point = (Point) iterator.next();g.setColor(Color.GREEN);g.fillOval(point.x, point.y, 7, 7);}}public void addPoint(Point point){points.add(point);}private class MouseListener extends MouseAdapter {@Overridepublic void mousePressed(MouseEvent e) {MyFrame frame = (MyFrame) e.getSource();
//            我们点击的时候,会在界面上产生一个点.frame.addPoint(new Point(e.getX(), e.getY()));frame.repaint();}}
}

输出:

2.11、键盘监听

目的:将从键盘输入的内容识别出来。

代码:

package com.edwin.lession03;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*** @author EdwinD* @create 2020.08.18 下午 10:38* @desc Keyboard**/
public class TextKeyListener {public static void main(String[] args) {new KeyFrame();}
}class KeyFrame extends Frame {public KeyFrame() {setBounds(377, 377, 277, 277);setVisible(true);this.addKeyListener(new KeyAdapter() {//键盘按下时的监听@Overridepublic void keyPressed(KeyEvent e) {//                获得键盘按下的键是哪一个,及当前按键的代号int keyCode = e.getKeyCode();System.out.println("You Have Pushed the Keyboard,the Num is"+keyCode);if (keyCode == KeyEvent.VK_UP) {System.out.println("向上键被按下了。");}}});this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("你点击了关闭X");System.exit(0);}});}
}

输出效果:


路漫漫其修远兮,吾将上下而求索。

参考文献

《【狂神说Java】GUI编程入门到游戏实战》
视频链接

2020.08.18

Java基础-GUI入门-AWT详解相关推荐

  1. java基础与案例开发详解 pdf下载_Java基础与案例开发详解(张孝祥) pdf_IT教程网...

    资源名称:Java基础与案例开发详解(张孝祥) pdf 第1.2和3章介绍Java环境的安装配置,Java程序的开发过程和Java语言的基础语法. 第4章介绍数组和常用算法的相关知识. 第5章和6章介 ...

  2. 【Java基础】HashMap原理详解

    [Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...

  3. java基础_题库详解

    删除线格式 # 1 JDK和JRE有什么区别? JRE:Java Runtime Environment( java 运行时环境).即java程序的运行时环境,包含了 java 虚拟机,java基础类 ...

  4. 【Java基础】· 集合习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  5. Java基础总结之Thymeleaf详解

    一.Thymeleaf语法 1.1 变量表达式${-} 1.2 选择变量表达式*{-} 1.3 消息表达式 #{-} 1.4 链接表达式 @{-} 1.5 片段表达式 ~{-} 二.基本使用 2.1 ...

  6. Java基础篇:内部类详解

    目录: 一.内部类的好处: 二.成员内部类: 三.局部内部类: 四.静态内部类: 五.匿名内部类: 六.总结: 内部类:可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个编译时概念 ...

  7. Java基础三个排序详解_继承粗解语法关键字分析

    集合存放数据的容器,存放的数据可以是基本类型也可以是引用类型,数据类型必须一致,存放数据的空间是连续的即地址连续,长度固定 声明数组变量 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量 ...

  8. Java基础之面向对象部分详解

    基本概念 面向对象可以说是采用现实模拟的方式来设计和开发程序.比如:1岁的鹦鹉正再说话.那么面向对象的理解就是:需要一只鹦鹉,它具有健康的属性,说话的行为,它现在在说话.程序代码如下: public ...

  9. Java基础:对象序列化详解

    在我们平日开发中,经常让PO类去实现Serializable接口,然后让其可序列化.不过有时我们并不是特别清楚为什么要序列化,特别是对于纯Web项目开发的同学来说,需求环境不一定能用上.下面我简单和大 ...

最新文章

  1. Qt中两种定时器用法
  2. 给自己的Sublime Text换上Soda Theme主题后清爽了好多
  3. pytorch Tensor的操作和Numpy之间的转化(三)
  4. .NET中委托写法的演变(上):委托与匿名方法
  5. 动态栈Stack的C语言实现
  6. Asp.net2.0 学习资源(转载)
  7. python, 面向对象编程Object Oriented Programming(OOP)
  8. 阿里巴巴十周年庆(预告)
  9. 第1章 Android编程入门
  10. 宇视EZVMS系统通过GB28181协议接入EasyGBS的步骤说明
  11. 华为路由器配置静态路由默认路由
  12. 万用表二极管档和三极管档的使用
  13. 人脸识别(Face Recognition)简要综述
  14. 统一社会信用代码校验-JavaScript
  15. epsfallback_广东移动通过EPS Fallback方式成功完成了5G高清语音和视频呼叫
  16. torch.randn()用法
  17. c语言fabs函数的返回值,fabs()函数
  18. 项目管理PMBOK中各知识领域过程的关系图
  19. 纯前端实现 App Store 卡片展开效果
  20. matlab多项式计算题目,MATLAB数据分析与多项式计算-习题答案

热门文章

  1. DL4J中文文档/开始/速查表
  2. 程序员如何持续高收入、财务自由
  3. MyBatis发展历史
  4. 360金融路演PPT曝光:周鸿祎持股14% 预计中旬上市
  5. TS-修饰符 与 static
  6. mysql如何设置密码
  7. linux期末vi简答题,Linux操作系统期末练习题lym
  8. N76E003 避坑指南(持续更新)
  9. 数据库 7---SQL语言复杂查询与视图
  10. Android-Hal-C++打印调用栈