文章目录

  • Jframe
  • JDialog
  • JPanel和JScrollPane容器
  • 文本组件
  • 按钮组件
    • 1.JCheckBox
    • 2.JRadionButton
  • JComboBox组件
  • 菜单组件
    • 1.下拉式菜单
    • 2.弹出式菜单
  • JTable

Swing包中提供了更加丰富、便捷、强大的GUI组件,而且这些组件都是Java语言编写而成的,因此,Swing组件不依赖于本地平台,可以真正做到跨平台运行。通常来讲,把依赖于本地平台的AWT组件称为重量级组件,而把不依赖本地平台的Swing组件称为轻量级组件。

大部分的Swing组件都是JComponent类的直接或者间接子类,而JComponent类是AWT中java.awt.Container的子类,说明Swing组件和AWT组件在继承树上形成了一定的关系。接下来通过一张继承关系图来描述一下AWT和Swing大部分组件的
关联关系,如图所示。

图中,展示了一些常用的Swing组件,不难发现,这些组件的类名和对应的AWT组件类名基本一致,大部分都是在AWT组
件类名的前面添加了“J”,但也有一些例外,比如Swing的JComboBox组件对应的是AWT中的Choice组件(下拉框)。

通过图中还可以看出,Swing中有三个组件是继承了AWT的Window类,而不是继承自JComponent类,它们分别是JWindow、JFrame、和JDialog,这三个组件是Swing中的顶级容器,它们都需要依赖本地平台,因此被称为重量级组件。其中,JWindow和AWT中的Window一样很少被使用,一般都是用JFrame和JDialog。

Jframe

在Swing组件中,最常见的一个就是JFrame,它和Frame一样是一个独立存在的顶级窗口,不能放置在其他容器之中,JFrame支持通用窗口所有的基本功能,例如窗口最小化、设定窗口大小等。

import javax.swing.*;
import java.awt.*;public class JFrameEx extends JFrame {public JFrameEx(){this.setTitle("first swing jframe");this.setSize(300,300);JButton button=new JButton("按钮");this.setLayout(new FlowLayout());this.add(button);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new JFrameEx();}
}

JDialog

JDialog是Swing的另外一个顶级窗口,它和Dialog一样都表示对话框。JDialog对话框可分为两种:模态对话框和非模态对话框。所谓模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口交互的对话框,而非模态对话框是允许用户在处理对话框的同时与其他窗口交互的对话框。
对话框是模态或者非模态,可以在创建JDialog对象时为构造方法传入参数来设置,也可以在创建JDialog对象后调用它的setModal()方法来进行设置。JDialog常见的构造方法如表所示。

表中,列举了JDialog三个常用的构造方法,在这三个构造方法中都需要接收一个Frame类型的对象,表示对话框所有者,如果该对话框没有所有者,参数owner可以传入null。第三个构造方法中,参数modal用来指定JDialog窗口是模态还是非模态,如果modal值设置为true,对话框就是模态对话框,反之则是非模态对话框,如果不设置modal的值,其默认值为false,也就是非模态对话框。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JDialogEx {public static void main(String[] args) {JFrame jFrame=new JFrame("jframe");JButton btn1=new JButton("模态对话框");JButton btn2=new JButton("非模态对话框");jFrame.add(btn1);jFrame.add(btn2);jFrame.setSize(300,300);jFrame.setLocation(300,300);jFrame.setLayout(new FlowLayout());jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jFrame.setVisible(true);//final JDialog dialog=new JDialog(jFrame,"Dialog");final JLabel label=new JLabel();final JButton btn3=new JButton("确定");dialog.add(btn3);dialog.setSize(150,150);dialog.setLocation(350,350);dialog.setLayout(new FlowLayout());btn1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {dialog.setModal(true);if(dialog.getComponents().length==1){dialog.add(label);}label.setText("模式对话框,惦记确定按钮关闭");dialog.setVisible(true);}});btn2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {dialog.setModal(false);if(dialog.getComponents().length==1){dialog.add(label);}label.setText("非模式对话框,点击确定按钮关闭");dialog.setVisible(true);}});btn3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {dialog.dispose();}});}
}

JPanel和JScrollPane容器

Swing组件中不仅具有JFrame和JDialog这样的顶级窗口,还提供了一些中间容器,这些容器不能单独存在,只能放置在顶级窗口中。
其中最常见的中间容器有两种:JPanel和JScrollPane
①JPanel:JPanel和AWT中的Panel组件使用方法基本一致,它是一个无边框,不能被移动、放大、缩小或者关闭的面板,它的默认布局管理器是FlowLayout。当然也可以使用JPanel带参数的构造函数JPanel(LayoutManager layout)或者它的setLayout()方法为其制定布局管理器。
②JScrollPane:与JPanel不同的是,JScrollPane是一个带有滚动条的面板容器,而且这个面板只能添加一个组件,如果想在JScrollPane面板中添加多个组件,应该先将组件添加到JPanel中,然后将JPanel添加到JScrollPane中。


表中,列出了JScrollPane的三个构造方法,其中,第一个构造方法用于创建一个空的JScrollPane面板,第二个构造方法用于创建显示指定组件的JScrollPane面板,这两个方法都比较简单。第三个构造方法,是在第二个构造方法的基础上指定滚动条策略。如果在构造方法中没用指定显示组件和滚动条策略,也可以使用JScrollPane提供的方法进行设置,如下表所示。

package ch0806;import javax.swing.*;
import java.awt.*;public class JScrollPaneAndJPanel extends JFrame {public JScrollPaneAndJPanel(){this.setTitle("panel demo");JScrollPane jScrollPane=new JScrollPane();jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);JPanel jPanel=new JPanel();jPanel.add(new JButton("按钮1"));jPanel.add(new JButton("按钮2"));jPanel.add(new JButton("按钮3"));jPanel.add(new JButton("按钮4"));jScrollPane.setViewportView(jPanel);this.add(jScrollPane, BorderLayout.CENTER);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(300,300);this.setVisible(true);}public static void main(String[] args) {new JScrollPaneAndJPanel();}
}

文本组件

文本组件用于接收用户输入的信息或向用户展示信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它们都有一个共同父类JTextComponent。JTextComponent是一个抽象类,它提供了文本组件常用的方法,如表所示。

表中列出了几种对文本组件进行操作的方法,其中包括选中文本内容、设置文本内容以及获取文本内容等。由于JTextField和JTextArea这两个文本组件都继承了JTextComponent类,因此它们都具有表中的方法,但它们在使用上还有一定的区别。

①JTextField:JTextField称为文本框,它只能接收单行文本的输入。JTextField常用的构造方法,如下表所示。

表中,列出了四个JTextField的构造方法,在创建JTextField文本框时,通常使用第二个或者第四个构造方法,指定文本框的列数。
JTextField有一个子类JPasswordText,它表示一个密码框,只能接收用户的单行输入,但是在此框中不显示用户输入的真实信息,而是通过显示指定的回显字符作为占位符。新创建的密码框默认的回显字符为“*”。JPasswordText和
JTextField的构造方法相似。

②JTextArea:JTextArea称为文本域,它能接收多行的文本的输入,使用JTextArea构造方法创建对象时可以设定区域的行数、列数。接下来,介绍一下JTextArea常用的构造方法,如下表所示。

表中,列出了四个JTextArea的构造方法,在创建文本域时,通常会使用最后两个构造方法,指定文本域的行数和列数。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JTextFieldAndJTextArea extends JFrame {private JButton sendBtn;private JTextField inputField;private JTextArea charContent;public JTextFieldAndJTextArea(){this.setLayout(new BorderLayout());inputField=new JTextField(20);sendBtn=new JButton("发送");charContent=new JTextArea(12,34);sendBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String content=inputField.getText();if(content!=null && !content.trim().equals("")){charContent.append("本人:"+content+"\n");}else {charContent.append("聊天消息不能为空");}inputField.setText("");}});Label label=new Label("聊天信息");JScrollPane showPanel=new JScrollPane(charContent);JPanel inputPanel=new JPanel();inputPanel.add(label);inputPanel.add(inputField);inputPanel.add(sendBtn);this.add(showPanel,BorderLayout.CENTER);this.add(inputPanel,BorderLayout.SOUTH);this.setTitle("聊天窗口");this.setSize(400,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new JTextFieldAndJTextArea();}
}

按钮组件

在Swing中,常见的按钮组件有JButton、JCheckBox、JRadioButton等,它们都是抽象类AbstractButton类的直接或间接子类。在AbstractButton类中提供了按钮组件通用的一些方法,如表所示。

1.JCheckBox

JCheckBox组件被称为复选框,它有选中(是)/未选中(非)两种状态,如果用户想接收的输入只有“是”和“非”,则可以通过复选框来切换状态。如果复选框有多个,则用户可以选中其中一个或者多个。
下表列举了创建JCheckBox对象的常用的构造方法。

表中,列出了用于创建JCheckBox对象的三个构造方法。其中,第一个构造方法没有指定复选框的文本信息以及状态,如果想设置文本信息,可以通过调用JCheckBox从父类继承的方法来进行设置。例如调用setText(String text)来设置复选框文本信息,调用setSelected(boolean b)方法来设置复选框状态(是否被选中),也可以调用isSelected()方法来判断复选框是否被选中。第二个和第三个构造方法都指定了复选框的文本信息,而且第三个构造方法还指定了复选框初始化状态是否被选中。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JCheckBoxEx extends JFrame {private JCheckBox italic;private JCheckBox bold;private JLabel label;public JCheckBoxEx(){label=new JLabel("我们欢迎您",JLabel.CENTER);label.setFont(new Font("宋体",Font.PLAIN,20));italic=new JCheckBox("italic");bold=new JCheckBox("bold");this.add(label);JPanel panel=new JPanel();panel.add(italic);panel.add(bold);this.add(panel,BorderLayout.SOUTH);ActionListener actionListener=new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int mode=0;if(bold.isSelected()){mode+=Font.BOLD;}if(italic.isSelected()){mode+=Font.ITALIC;}label.setFont(new Font("宋体",mode,20));}};italic.addActionListener(actionListener);bold.addActionListener(actionListener);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(300,300);this.setVisible(true);}public static void main(String[] args) {new JCheckBoxEx();}}

2.JRadionButton

JRadioButton组件被称为单选按钮,与JCheckBox复选框不同的是,单选按钮只能选中一个。就像随身听上的播放和快进按钮,当按下一个,先前按下的按钮就会自动弹起。对于JRadioButton按钮来说,当一个按钮被选中时,先前被选中的按钮就会自动取消选中。

由于JRadioButton组件本身并不具备这种功能,因此若想实现JRadioButton按钮之间的互斥,需要使用javax.swing.ButtonGroup类,它是一个不可见的组件,不需要将其增加到容器中显示,只是在逻辑上表示一个单选按钮组。将多个JRadioButton按钮添加到同一个单选按钮组对象中,就能实现按钮的单选功能。表列举了创建JRadioButton对象常见的构造方法。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JRadioButtonEx extends JFrame {private ButtonGroup group;private JPanel panel;private JPanel pallet;public JRadioButtonEx(){pallet=new JPanel();this.add(pallet, BorderLayout.CENTER);panel=new JPanel();group=new ButtonGroup();addJRadioButton("灰");addJRadioButton("粉");addJRadioButton("黄");this.add(panel,BorderLayout.SOUTH);this.setSize(300,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}private void addJRadioButton(final String text){JRadioButton radioButton=new JRadioButton(text);group.add(radioButton);panel.add(radioButton);radioButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Color color=null;if("灰".equals(text)){color=Color.GRAY;}else if("粉".equals(text)) {color=Color.PINK;}else if("黄".equals(text)){color=Color.YELLOW;}else {color=Color.WHITE;}pallet.setBackground(color);}});}public static void main(String[] args) {new JRadioButtonEx();}
}

JComboBox组件

JComboBox组件被称为组合框或者下拉列表框,它将所有选项折叠收藏在一起,默认显示的是第一个添加的选项。当用户单击组合框时,会出现下拉式的选择列表,用户可以从中选择其中一项并显示。

JComboBox组合框组件分为可编辑和不可编辑两种形式,对于不可编辑的组合框,用户只能在现有的选项列表中进行选择,而对于可编辑的组合框,用户既可以在现有的选项中选择,也可以自己输入新的内容。需要注意的是,自己输入的内容只能作为当前项显示,并不会添加到组合框的选项列表中。表中列举JComboBox类的常用构造方法。

在使用JComboBox时,需要用到它的一些常用方法,如表所示。

package ch0806;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JComboBoxEx extends JFrame {private JComboBox comboBox;private JTextField field;public JComboBoxEx(){JPanel panel=new JPanel();comboBox=new JComboBox();comboBox.addItem("请选择城市");comboBox.addItem("北京");comboBox.addItem("天津");comboBox.addItem("南京");comboBox.addItem("上海");comboBox.addItem("重庆");comboBox.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String item=(String) comboBox.getSelectedItem();if("请选择城市".equals(item)){field.setText("");}else {field.setText("您选择的城市是:"+item);}}});field=new JTextField(20);panel.add(comboBox);panel.add(field);this.add(panel,BorderLayout.NORTH);this.setSize(350,100);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new JComboBoxEx();}
}

菜单组件

在GUI程序中,菜单是很常见的组件,利用Swing提供的菜单组件可以创建出多种样式的菜单。

1.下拉式菜单

对于下拉式菜单,读者肯定很熟悉,因为计算机中很多文件的菜单都是下拉式的,如记事本的菜单。在GUI程序中,创建下拉式菜单需要使用三个组件:JMenuBar(菜单栏)、JMenu(菜单)和JMenuItem(菜单项),以记事本为例,这三个组件在菜单中对应的位置如图所示。

图中,分别指出了菜单的三个组件,接下来针对这三个组件进行详细的讲解。
(1)JMenuBar:JMenuBar表示一个水平的菜单栏,它用来管理菜单,不参与同用户的交互式操作。菜单栏可以放在容器的任何位置,但通常情况下会使用顶级窗口(如JFrame、JDialog)的setJMenuBar(JMenuBar menuBar)方法将它放置在顶级窗口的顶部。JMenuBar有一个无参构造函数,创建菜单栏时,只需要使用new关键字创建JMenuBar对象即可。创建完菜单栏对象后,可以调用它的add(JMenu c)方法为其添加JMenu菜单。
(2)JMenu:JMenu表示一个菜单,它用来整合管理菜单项。菜单可以是单一层次的结构,也可以是多层次的结构。大多情况下,会使用构造函数JMenu(String text)创建JMenu菜单,其中参数text表示菜单上的文本。

JMenu中还有一些常用的方法,如表所示。

(3)JMenuItem:JMenuItem表示一个菜单项,它是菜单系统中最基本的组件。和JMenu菜单一样,在创建JMenuItem菜单项时,通常会使用构造方法JMenumItem(String text)为菜单项指定文本内容。

由于JMenuItem类是继承自AbstractButton类的,因此可以把它看成是一个按钮。如果使用无参的构造方法创建了一个菜单项,则可以调用从AbstractButton类中继承的setText(String text)方法和setIcon()方法为其设置文本和图标。

package ch0806;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JMenusEx extends JFrame {public JMenusEx(){//确定窗口位置大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(300,300);this.setVisible(true);//确定组件关系JMenuBar menuBar=new JMenuBar();this.setJMenuBar(menuBar);JMenu menu=new JMenu("操作");menuBar.add(menu);JMenuItem item1=new JMenuItem("弹出窗口");JMenuItem item2=new JMenuItem("关闭");menu.add(item1);menu.addSeparator();menu.add(item2);//确定组件监听器item1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {JDialog dialog=new JDialog(JMenusEx.this,true);dialog.setTitle("弹出窗口");dialog.setSize(200,200);dialog.setLocation(50,50);dialog.setVisible(true);}});item2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});}public static void main(String[] args) {new JMenusEx();}
}

2.弹出式菜单

对于弹出式菜单,相信大家也不会陌生,在Windows桌面单击鼠标右键会出现一个菜单,那就是弹出式菜单。在Java的Swing组件中,弹出式菜单用JPopupMenu表示。

JPopupMenu弹出式菜单和下拉式菜单一样,都通过调用add()方法添加JMenuItem菜单项,但它默认是不可见的。如果想要显示出来,则必须调用它的show(Component invoker,int x,int y)方法,该方法中参数invoker表示JPopupMenu菜单显示位置的参考组件,x和y表示invoker组件坐标空间中的一个坐标,显示的是JPopupMenu菜单的左上角坐标。

package ch0806;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;public class JPopMenuEx extends JFrame {private JPopupMenu popupMenu;public JPopMenuEx(){this.setSize(300,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);popupMenu=new JPopupMenu();JMenuItem refreshItem=new JMenuItem("refresh");JMenuItem createItem=new JMenuItem("create");JMenuItem exitItem=new JMenuItem("exit");popupMenu.add(refreshItem);popupMenu.add(createItem);popupMenu.add(exitItem);exitItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});this.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {if(e.getButton()==MouseEvent.BUTTON3){popupMenu.show(e.getComponent(),e.getX(),e.getY());}}});}public static void main(String[] args) {new JPopMenuEx();}
}

JTable

表格也是GUI程序中常用的组件,表格是一个由多行、多列组成的二维显示区。Swing的JTable以及相关类提供了对这种表格的支持。使用了JTable以及相关类,程序既可以使用简单代码创建出表格来显示二维数据,也可以开发出功能丰富的表格,还可以为表格定制各种显示外观、编辑特性。
使用JTable来创建表格是非常容易的事情,它可以把一个二维数据包装成一个表格,这个二维数据既可以是一个二维数组,也可以是集合元素Vector对象(Vector里面包含Vector形成二维数据)。除此之外,为了给该表格的每一列指定列标题,还需要传入一个一维数据作为列标题,这个一维数据既可以是一维数组,也可以是Vector对象。

在使用JTable以前,先看一下它的构造函数有哪些,如表所示。

在表中,TableModel是用来存储列表数据的,数据包括表头的标题数据与表体的实体数据。TableModel为功能接口,通常使用其具体的实现类DefaultTableModel,其构造方法如下:

public DefaultTableModel(Object [] [] tbody,Object [] thead)

在上述代码中,tbody表示表体,为一个二维数组;thead表示表头,为一个一维数组。其具体描述如下。
表体:是一个Object类型的二维数组,由于多态的自动类型提升,可以直接使用String[][]来存储数据。
表头:是一个Object类型的一维数组,同样,可以直接使用String[]来存储所有的标题字符串。

package ch0806;import javax.swing.*;public class JTableEx {private JFrame frame=new JFrame("simple table");private JTable table;Object[] columnTitle={"姓名","年龄","性别"};Object[][] tableData={new Object[]{"李清照",29,"女"},new Object[]{"苏格拉底",56,"男"},new Object[]{"李白",35,"男"},new Object[]{"弄玉",18,"女"},new Object[]{"虎头",2,"男"}};public void init(){table=new JTable(tableData,columnTitle);frame.add(new JScrollPane(table));frame.pack();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}public static void main(String[] args) {new JTableEx().init();}
}

java Swing组件总结相关推荐

  1. java swing 组件技术(上)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次写自己的博客,明知道写得很水,还是努力去写了,希望踏出第一步之后,能有着更好的发展.这几天看了一些资料,总结了一下自己所 ...

  2. JAVA Swing 组件演示***

    下面是Swing组件的演示: package a_swing;import java.awt.BorderLayout; import java.awt.Color; import java.awt. ...

  3. 博为峰Java技术题 ——JavaSE Java Swing组件类的层次

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 下图讲述Swing组件类的层次,如图: 从以上的结构示意图中可以知道,Swing组件可以分成两种类型,一种是 ...

  4. java jpanel调用构造函数的时候就开始执行repaint_在Java Swing组件中劫持`repaint()`调用...

    我正在编写一个在无头环境中运行的应用程序,需要输出到Buffered Image而不是屏幕.我有一个管理BufferedImage的Display类.我的应用程序扩展了JPanel,为了在组件更新时自 ...

  5. java swing 组件渲染过程_Java Swing无法正确渲染

    我一直在做一个项目 . 在项目的一部分,我需要在JPanel上绘制 . Graphics2D对象被传递给框架的模型部分,模型将绘制在该实例中绘制的任何内容 . 问题是JFrame未正确呈现 . 它看起 ...

  6. java swing组件_Java -- Swing 组件使用

    1. 示例1 public class Main { JFrame f = new JFrame(); Icon okIcon = new ImageIcon("/home/test/sta ...

  7. java背景图片加上组件_关于 java swing组件加背景图片的问题

    最近自己做了一个小的进销存软件,背景图片加上后不能最大化.尝试了好几种方法 最后终于把问题解决了.下面把自己写的实例 分享一下: 一个是在JFrame窗体中加如背景图片 一个是在Jpanel 面板中加 ...

  8. java监控任务进度_Java Swing组件实现进度监视功能示例

    本文实例讲述了java swing组件实现进度监视功能.分享给大家供大家参考,具体如下: 实例一: import java.awt.event.actionevent; import java.awt ...

  9. java的setbounds_java Swing组件setBounds()简单用法实例分析

    本文实例讲述了java Swing组件setBounds()简单用法.分享给大家供大家参考,具体如下: 先看API: public void setBounds(Rectangle r) 移动组件并调 ...

最新文章

  1. 使用 netfilter 处理IPv6报文
  2. button theme
  3. MUI 地址选择器 - picker使用
  4. 【BZOJ2115】Xor,第一次的线性基
  5. spyder下载python3.5_ubuntu14.04 anaconda tensorflow spyder(python3.5) + opencv3
  6. chrome Axure插件(Mac版)
  7. DNS安全漫谈:DNS劫持频发,网络安全去哪儿了?
  8. WIN7重装系统之缺少所需的CD/DVD驱动器设备驱动程序
  9. 拳皇 - 人物动作素材图 61种
  10. 《操作系统真象还原》——0.6 为什么称为“陷入”内核
  11. 提示https不安全的原因及解决办法
  12. python提升算法3_XGBOOST_docs_Scikit-LearnAPI_XGBClassifier_train参数01
  13. 2018,AI旗舰启程出发!自动化所全球AI邀请函
  14. cesium城市建筑物光效(cesium篇.23)
  15. POJ 3693 Maximum repetition substring (后缀数组)
  16. 安卓分屏神器_手机端必备神器,一经推出轻松拥有过千万用户下载量!
  17. Ubuntu下如何下载linux内核源码
  18. 学习笔记:SKU组件(React版)
  19. JPEG原理分析 及 JPEG解码器的调试
  20. ThinkPHP5数据库操作

热门文章

  1. Mac M1 使用conda安装jupyter notebook
  2. c语言程序小猪佩奇,使用canvas 代码画小猪佩奇(示例代码)
  3. linux下同时装ananocda2和anaconda3通过修改.bashrc文件进行切换
  4. “永恒之蓝”第一弹-关于防范感染勒索蠕虫病毒的紧急通知
  5. idea中提示程序包不存在或cannot resolve symbol
  6. 计算机突然断电磁盘中的程序,电脑突然断电对硬盘有影响吗 保护电脑硬盘方法【详解】...
  7. 升级JDK8的坎坷之路
  8. Win10 Rational Rose 关于报错 Rational Lience Key Error及一劳永逸解决报错法
  9. DeFi中价值千万的关键字Gitcoin
  10. 城市信息模型基础平台(CIM)产品白皮书