GUI程序设计2
8. 按钮(JButton)使用示例
例14. 按钮使用示例。
package GUI; import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame; public class demoJButton implements ActionListener{
JFrame jf;
JButton jb;
Container con;
ImageIcon closeIcon,openIcon; public demoJButton(){
jf = new JFrame("JButton使用示例");
openIcon = new ImageIcon("open.jpg");
closeIcon = new ImageIcon("close.jpg");
jb = new JButton("打开", openIcon);
jb.addActionListener(this);
con = jf.getContentPane();
con.add(jb, BorderLayout.NORTH);
jf.setSize(, );
jf.setLocation(, );
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJButton(); } public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb){
if(jb.getText().compareTo("打开")==){
jb.setText("关闭");
jb.setIcon(closeIcon);
}else {
jb.setText("打开");
jb.setIcon(openIcon);
}
} } }
9. 文本框(JTextField)和密码框(JPasswordField)使用示例
例. 文本框和密码框使用示例。
package GUI; import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField; public class demoJText {
JLabel jl1,jl2;
JFrame jf;
Container con;
JButton loginBtn,cancelBtn;
JTextField userText;
JPasswordField jpf;
HandleAction handleAction; public class HandleAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
String msg;
if(e.getSource()==loginBtn){
msg = "你的用户名是:"+userText.getText()+"\n你的密码是:"+new String(jpf.getPassword());
JOptionPane.showMessageDialog(jf, msg);
}else if(e.getSource()==cancelBtn){
userText.setText("");
jpf.setText("");
}
}
} public demoJText(){
jl1 = new JLabel("用户名");
jl2 = new JLabel("密 码");
jf = new JFrame("文本框和密码框使用示例");
con = jf.getContentPane();
handleAction = new HandleAction();
loginBtn = new JButton("登录");
loginBtn.addActionListener(handleAction);
cancelBtn = new JButton("取消");
cancelBtn.addActionListener(handleAction);
userText = new JTextField();
userText.setColumns();
jpf = new JPasswordField();
jpf.setColumns();
con.setLayout(new FlowLayout());
con.add(jl1);
con.add(userText);
con.add(jl2);
con.add(jpf);
con.add(loginBtn);
con.add(cancelBtn);
jf.setSize(, );
jf.setLocation(, );
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJText(); } }
如果需要在输入的密码框中显示其他符号,可以使用setEchoChar('*')来实现。
实现回车功能的该进如下:
package GUI; import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField; public class demoJText {
JLabel jl1,jl2;
JFrame jf;
Container con;
JButton loginBtn,cancelBtn;
JTextField userText;
JPasswordField jpf;
HandleAction handleAction; public class HandleAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
String msg;
if(e.getSource()==loginBtn){
msg = "你的用户名是:"+userText.getText()+"\n你的密码是:"+new String(jpf.getPassword());
JOptionPane.showMessageDialog(jf, msg);
}else if(e.getSource()==cancelBtn){
userText.setText("");
jpf.setText("");
}else if(e.getSource()==userText){
jpf.requestFocus();
}else if(e.getSource()==jpf){
loginBtn.doClick();
}
}
} public demoJText(){
jl1 = new JLabel("用户名");
jl2 = new JLabel("密 码");
jf = new JFrame("文本框和密码框使用示例");
con = jf.getContentPane();
handleAction = new HandleAction();
loginBtn = new JButton("登录");
loginBtn.addActionListener(handleAction);
cancelBtn = new JButton("取消");
cancelBtn.addActionListener(handleAction);
userText = new JTextField();
userText.addActionListener(handleAction);
userText.setColumns(20);
jpf = new JPasswordField();
jpf.addActionListener(handleAction);
jpf.setColumns(20);
con.setLayout(new FlowLayout());
con.add(jl1);
con.add(userText);
con.add(jl2);
con.add(jpf);
con.add(loginBtn);
con.add(cancelBtn);
jf.setSize(300, 300);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJText(); } }
10. 文本区(JTextArea)使用示例
例. 文本区使用使用示例。
package GUI;
import javax.swing.*;
public class demoJTextArea {
JFrame jf;
JScrollPane jsp;
JTextArea jta; public demoJTextArea(){
jf = new JFrame("这是一个JTextArea使用示例");
jta = new JTextArea();
jsp = new JScrollPane(jta);
jf.getContentPane().add(jsp);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args) {
new demoJTextArea();
}
}
11. 复选框(JCheckBox)使用示例
例. 复选框使用示例。
package GUI; import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.*;
public class demoJcheckBox implements ActionListener{
JFrame jf;
JLabel jl;
JCheckBox jb[];
Container con;
JButton OKbtn;
static final String ProvinceName[]={"北京","上海","天津","辽宁","吉林","四川","湖南","湖北","广东"}; public demoJcheckBox(){
jf = new JFrame("JCheckBox使用示例");
jl = new JLabel("请至少选择一个你去过的省份");
con = jf.getContentPane();
con.setLayout(new FlowLayout());
con.add(jl);
jb = new JCheckBox[ProvinceName.length];
for(int i=0;i<jb.length;i++){
jb[i] = new JCheckBox(ProvinceName[i],false);
con.add(jb[i]);
}
OKbtn = new JButton("确定");
OKbtn.addActionListener(this);
con.add(OKbtn);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public void actionPerformed(ActionEvent e) {
String str= "";
int count = 0;
for(int i=0;i<jb.length;i++){
if(jb[i].isSelected()){
count++;
str = str + jb[i].getText() + " ";
}
}
if(e.getSource()==OKbtn)
JOptionPane.showMessageDialog(jf, "你选择了"+count+"个省份,它们是:\n"+str); } public static void main(String[] args) {
new demoJcheckBox(); }
}
12. 单选按钮(JRadioButton)使用示例
单选按钮本身无法知道自己和其它按钮的关系,所以要把他们放在一个名为ButtonGroup的组件中统一管理。该组件本身不可见,但对于JRadioButton却是必不可少的。
例. 单选按钮使用示例。
package GUI; import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.*;
public class demoJRadioButton implements ActionListener{
JFrame jf;
JLabel jl;
JButton Okbtn;
JRadioButton jrb1,jrb2;
ButtonGroup sexbg;
Container con;
String str="男";
public demoJRadioButton(){
jf = new JFrame("JRadioButton使用示例");
jl = new JLabel("请选择性别");
Okbtn = new JButton("确定");
Okbtn.addActionListener(this);
jrb1 = new JRadioButton("男",true);
jrb1.addActionListener(this);
jrb2 = new JRadioButton("女",false);
jrb2.addActionListener(this);
sexbg = new ButtonGroup();
sexbg.add(jrb1);
sexbg.add(jrb2);
con = jf.getContentPane();
con.setLayout(new FlowLayout());
con.add(jl);
con.add(jrb1);
con.add(jrb2);
con.add(Okbtn);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof JRadioButton){
str = e.getActionCommand();
}else{
JOptionPane.showMessageDialog(jf, "你选择了"+str);
} } public static void main(String[] args) {
new demoJRadioButton(); } }
13. 列表框(JList)使用示例
例. 列表框使用示例。
package GUI;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.*;
public class demoJList implements ActionListener{
JFrame jf;
JPanel jp;
JButton addBtn,delBtn;
Container con;
JList lList,rList;
DefaultListModel lModel,rModel;
JScrollPane ljsp,rjsp;
JSplitPane jsp;
static final String city[] = {"北京","上海","天津","辽宁","吉林","四川","湖南","湖北","广东"}; public demoJList(){
jf = new JFrame("JList使用示例");
jp = new JPanel();
addBtn = new JButton("选中>>");
addBtn.addActionListener(this);
delBtn = new JButton("撤销<<");
delBtn.addActionListener(this);
con = jf.getContentPane();
lModel = new DefaultListModel();
for(int i=0;i<city.length;i++)
lModel.addElement(city[i]);
rModel = new DefaultListModel();
lList = new JList(lModel);
rList = new JList(rModel);
ljsp = new JScrollPane(lList);
rjsp = new JScrollPane(rList);
jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,ljsp,rjsp);
con.add(jsp, BorderLayout.CENTER);
jp.add(addBtn);
jp.add(delBtn);
con.add(jp, BorderLayout.SOUTH);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jsp.setDividerLocation(0.5);
} public void actionPerformed(ActionEvent e) {
int i;
if(e.getSource()==addBtn){
for(i=0;i<lModel.size();i++)
if(lList.isSelectedIndex(i))
rModel.addElement(lModel.getElementAt(i));
for(i--;i>=0;i--)
if(lList.isSelectedIndex(i))
lModel.removeElementAt(i);
}else{
for(i=0;i<rModel.size();i++)
if(rList.isSelectedIndex(i))
lModel.addElement(rModel.getElementAt(i));
for(i--;i>=0;i--)
if(rList.isSelectedIndex(i))
rModel.removeElementAt(i);
} } public static void main(String[] args) {
new demoJList();
}
}
14. 组合框(JComboBox)使用示例
例. 组合框使用示例。
package GUI;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import javax.swing.*;
public class demoJComboBox implements ItemListener,ActionListener{
JFrame jf;
JLabel jl1,jl2;
JComboBox jcb;
JButton btn;
Container con;
static final String city[] = {"北京","上海","天津","辽宁","吉林","四川","湖南","湖北","广东"}; public demoJComboBox(){
jf = new JFrame("JComboBox使用示例");
jl1 = new JLabel("您的选择是:");
jl2 = new JLabel(" ");
jcb = new JComboBox(city);
jcb.setEditable(true);
jcb.addItemListener(this);
btn = new JButton("可以编辑");
btn.addActionListener(this);
con = jf.getContentPane();
con.setLayout(new FlowLayout());
con.add(jl1);
con.add(jl2);
con.add(jcb);
con.add(btn);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn){
if(btn.getText().compareTo("可以编辑")==0){
btn.setText("不可编辑");
jcb.setEditable(true);
}else{
btn.setText("可以编辑");
jcb.setEditable(false);
}
}
} public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED)
jl2.setText((String)jcb.getSelectedItem());
} public static void main(String[] args) {
new demoJComboBox(); } }
15. 表格(Jtable)使用示例
一般情况下,可以通过Jtable(int row,int col)来指定表格拥有的行和列。如果需要动态地调整列数,可以直接使用它的方法addColumn()和removeColumn()。如果需要调整行数,则像JList一样,需要调用和它的联系的DefaultTableModel的addRow()和removeRow()方法。还有,JTable本身不提供滚动条,需要把它放到JScrolPane中才能滚动。
例15.1 表格使用示例1。
package GUI;
import java.awt.Container; import javax.swing.*;
public class demoJTable_1 {
JFrame jf;
JScrollPane jsp;
JTable jtab;
Container con; public demoJTable_1(){
jf = new JFrame("JTable使用示例");
jtab = new JTable(10,3);
jsp = new JScrollPane(jtab);
con = jf.getContentPane();
con.add(jsp);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJTable_1();
} }
例15.2 表格使用示例2.
package GUI;
import javax.swing.*;
public class demoJTable_2 {
JFrame jf;
JScrollPane jsp;
JTable jtab; public demoJTable_2(){
Object[][] stu = {
{"小王",new Integer(66),new Integer(72),new Integer(98),new Boolean(false)},
{"小张",new Integer(82),new Integer(69),new Integer(78),new Boolean(true)}
};
String[] title = {"姓名","语文","数学","总分","及格"};
jf = new JFrame("JTable使用示例");
jtab = new JTable(stu,title);
jsp = new JScrollPane(jtab);
jf.add(jsp);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJTable_2(); } }
注意:这里必须要使用滚动面板来显示表格,如果直接将表格加入到JFrame中,表头将无法正常显示。
例15.3 表格使用示例3。
package GUI;
import java.awt.Container; import javax.swing.*;
import javax.swing.table.TableColumn;
public class demoJTable_3 {
JFrame jf;
JScrollPane jsp;
JTable jtab;
Container con;
Object[][] stu = {
{"小王",new Integer(66),new Integer(72),new Integer(98),new Boolean(false),new Boolean(false)},
{"小张",new Integer(82),new Integer(69),new Integer(78),new Boolean(true),new Boolean(false)}
};
String[] title = {"姓名","语文","数学","总分","及格","作弊"}; public demoJTable_3(){
jf = new JFrame();
jf.setTitle("JTable使用示例");
jtab = new JTable(stu,title);
//利用JTable中的getColumnModel()方法取得TableColumnModel对象的引用
//利用对象的setPreferredWidth()方法就可以控制字段的宽度
for(int i=0;i<title.length;i++){
TableColumn column = jtab.getColumnModel().getColumn(i);
if(i%2==0)
column.setPreferredWidth(150);
else
column.setPreferredWidth(50);
}
jsp = new JScrollPane(jtab);
con = jf.getContentPane();
con.add(jsp);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJTable_3();
}
}
前面的3个例子都只是显示数据供用户查看,如果需要获取用户修改后的数据,程序只需利用getColumnCount()和getRowCount()方法,获得JTable的列数和行数,然后遍历整个JTable,利用getValueAt()方法获取单元格里的内容就可以了。如果修改某个单元格里面的值,也可以利用setValueAt()来完成。
例15.4 表格使用示例4.
package GUI;
import javax.swing.*; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class demoJTable_4 implements ActionListener {
JFrame jf;
JTable sourceTable,destTable;
JScrollPane jsp1,jsp2;
JButton copyBtn;
Container con;
JPanel jp;
int row,col; public demoJTable_4(){
jf = new JFrame("JTable使用示例");
sourceTable = new JTable(2,3);
col = sourceTable.getColumnCount();
row = sourceTable.getRowCount();
destTable = new JTable(col,row);
jsp1 = new JScrollPane(sourceTable);
jsp2 = new JScrollPane(destTable);
copyBtn = new JButton("复制数据");
copyBtn.addActionListener(this);
jp = new JPanel();
jp.add(copyBtn);
con = jf.getContentPane();
con.setLayout(new GridLayout(3,1));
con.add(jsp1);
con.add(jp);
con.add(jsp2);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
int i,j;
Object obj;
if(e.getSource()==copyBtn){
for(i=0;i<row;i++)
for(j=0;j<col;j++){
obj = sourceTable.getValueAt(i, j);
destTable.setValueAt(obj, j, i);
}
}
} public static void main(String[] args){
new demoJTable_4();
} }
与JTable相关的模型有3个:TableModel、TableColumnModel和ListSelectionModel。其中最常用的是TableModel。
重写一个MyTableModle来代替系统提供的DefaultTableModle,这样可以显示Boolean类型的数据时,不以字符串形式显示,而是以checkBox的形式显示,并且字符串会左对齐,而数值则右对齐。
例15.5 表格使用示例5.
package GUI; import javax.swing.table.AbstractTableModel; final class MyTableModel extends AbstractTableModel {
private Object data[][]; //存储表格中的数据
private String[] tableName; //存储表头
public MyTableModel(Object[][] data, String[] tableName){
this.data = data;
this.tableName = tableName;
} public MyTableModel(Object[][] data){
char[] tch = {'A'};
tableName = new String[data[0].length];
this.data = data;
for(int i=0;i<tableName.length;i++){
tableName[i] = new String(tch);
tch[0]++;
}
} public int getRowCount() {
return data.length;
} public int getColumnCount() {
return data[0].length;
} public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
} public Class<?> getColumnClass(int columnIndex) {
return data[0][columnIndex].getClass();
} public String getColumnName(int column) {
return tableName[column];
} }
在上述类中,真正和显示有关的就只有getColumnClass()方法。该方法返回实际存储数据的类类型,因此在显示的时候,表格会根据这些类型做调整。
package GUI;
import java.awt.Container; import javax.swing.*;
import javax.swing.table.TableColumn;
public class demoJTable_5 {
JFrame jf;
JScrollPane jsp;
JTable jtab;
MyTableModel mtm;
Container con;
Object[][] stu = {
{"小王",new Integer(66),new Integer(72),new Integer(98),new Boolean(false),new Boolean(false)},
{"小张",new Integer(82),new Integer(69),new Integer(78),new Boolean(true),new Boolean(false)}
};
String[] title = {"姓名","语文","数学","总分","及格","作弊"}; public demoJTable_5(){
jf = new JFrame();
jf.setTitle("JTable使用示例");
//创建带内容和表头信息的模型
mtm = new MyTableModel(stu,title);
//用模型创建表格,取代默认的模型
jtab = new JTable(mtm);
//利用JTable中的getColumnModel()方法取得TableColumnModel对象的引用
//利用对象的setPreferredWidth()方法就可以控制字段的宽度
for(int i=0;i<title.length;i++){
TableColumn column = jtab.getColumnModel().getColumn(i);
if(i%2==0)
column.setPreferredWidth(150);
else
column.setPreferredWidth(50);
}
jsp = new JScrollPane(jtab);
con = jf.getContentPane();
con.add(jsp);
jf.setSize(500, 400);
jf.setLocation(300, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJTable_5();
}
}
GUI程序设计2的更多相关文章
- ATL的GUI程序设计(4)
第四章 对话框和控件 对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式--对话框(Dialog Box).我们可以 ...
- ATL的GUI程序设计(3)
第三章 ATL的窗口类 CWindowImpl.CWindow.CWinTraits,ATL窗口类的奥秘尽在此三者之中.在本章里,李马将为你详细解说它们的使用方法.另外,本章的内容也可以算是本书的核心 ...
- ATL的GUI程序设计(2)
from:http://blog.titilima.com/atlgui-2.html 第二章 一个最简单窗口程序的转型 我知道,可能会有很多朋友对上一章的"Hello, World!&qu ...
- ATL的GUI程序设计(前言)
前言 也许,你是一个顽固的SDK簇拥者: 也许,你对MFC抱着无比排斥的态度,甚至像我一样对它几乎一无所知: 也许,你符合上面两条,而且正在寻求着一种出路: 也许,你找到了一条出路--WTL,但是仍然 ...
- ATL的GUI程序设计(1)
from:http://blog.titilima.com/atlgui-1.html 第一章 不能免俗的"Hello, World!" 在这一章里,就像所有的入门级教程一样,我也 ...
- Java GUI程序设计
在实际应用中,我们见到的许多应用界面都属于GUI图形型用户界面.如:我们点击QQ图标,就会弹出一个QQ登陆界面的对话框.这个QQ图标就可以被称作图形化的用户界面. 其实,用户界面的类型分为两类:Com ...
- GUI程序设计
1. 对话框(JDialog)使用示例 例1. JDialog简单使用示例. import javax.swing.JLabel; public class demoJDialog { JFrame ...
- Matlab GUI程序设计入门——信号发生器+时域分析
背景:学习matlab gui编程入门,完成一个基于GUIDE的图形化界面程序,结合信号生成及分析等. 操作步骤: 1.新建程序 新建一个GUIDE程序 这里选择第一个选项,即创建一个空白的GUIDE ...
- MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法
在运行期间,ListBox控件突然消失,同时给出如下错误提示: Warning: single-selection listbox control requires that Value be an ...
随机推荐
- Hadoop自定义类型处理手机上网日志
job提交源码分析 在eclipse中的写的代码如何提交作业到JobTracker中的哪?(1)在eclipse中调用的job.waitForCompletion(true)实际上执行如下方法 con ...
- docker 删除none镜像
Windows版本,参考官方地址:https://forums.docker.com/t/how-to-remove-none-images-after-building/7050 docker rm ...
- PHP的单引号和双引号
单引号内部的变量不会执行,双引号会执行. <?php $name = 'hello php'; echo "<h1>$name</h1>"; echo ...
- spring中的scope详解
spring容器中的bean默认是单例模式的,改成非单例模式需要在类上加上@Scope("prototype") 1. scope概论 spring中scope是一个非常关键的概念 ...
- Java反射机制demo(五)—获得并调用一个类中的方法
Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...
- JDK源码分析(一)——ArrayList
目录 ArrayList分析 ArrayList继承结构 ArrayList字段属性 ArrayList构造函数 重要方法 ArrayList Iterator迭代器 总结 ArrayList分析 ...
- JavaQuery
1.初识jQuery <!DOCTYPE html> <html> <head lang="en"> <meta charse ...
- map赋值前要先初始化:assignment to entry in nil map
注意这种map的嵌套的形式,make只初始化了map[string]T部分(T为map[int]int),所以下面的赋值会出现错误: test := make(map[string]map[int]i ...
- tftp协议
<前言> 嵌入式开发是一个交叉开发的模式,需要将宿主机上的文件烧写到目标机上. 方式: JTAG USB 串口 网络 <tftp下载> 首先需要将宿主机架成一个TFTP的服务器 ...
- 我的vim配置脚本
自己的VIM 配置脚本,拥有自主独立知识产权(参考了一点别人的),只使用了一个插件ctags ,主要实现了一下功能: 自动补全括号,双引号,单引号,包括{},(),"" , ''只 ...