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的更多相关文章

  1. ATL的GUI程序设计(4)

    第四章 对话框和控件 对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式--对话框(Dialog Box).我们可以 ...

  2. ATL的GUI程序设计(3)

    第三章 ATL的窗口类 CWindowImpl.CWindow.CWinTraits,ATL窗口类的奥秘尽在此三者之中.在本章里,李马将为你详细解说它们的使用方法.另外,本章的内容也可以算是本书的核心 ...

  3. ATL的GUI程序设计(2)

    from:http://blog.titilima.com/atlgui-2.html 第二章 一个最简单窗口程序的转型 我知道,可能会有很多朋友对上一章的"Hello, World!&qu ...

  4. ATL的GUI程序设计(前言)

    前言 也许,你是一个顽固的SDK簇拥者: 也许,你对MFC抱着无比排斥的态度,甚至像我一样对它几乎一无所知: 也许,你符合上面两条,而且正在寻求着一种出路: 也许,你找到了一条出路--WTL,但是仍然 ...

  5. ATL的GUI程序设计(1)

    from:http://blog.titilima.com/atlgui-1.html 第一章 不能免俗的"Hello, World!" 在这一章里,就像所有的入门级教程一样,我也 ...

  6. Java GUI程序设计

    在实际应用中,我们见到的许多应用界面都属于GUI图形型用户界面.如:我们点击QQ图标,就会弹出一个QQ登陆界面的对话框.这个QQ图标就可以被称作图形化的用户界面. 其实,用户界面的类型分为两类:Com ...

  7. GUI程序设计

    1. 对话框(JDialog)使用示例 例1. JDialog简单使用示例. import javax.swing.JLabel; public class demoJDialog { JFrame ...

  8. Matlab GUI程序设计入门——信号发生器+时域分析

    背景:学习matlab gui编程入门,完成一个基于GUIDE的图形化界面程序,结合信号生成及分析等. 操作步骤: 1.新建程序 新建一个GUIDE程序 这里选择第一个选项,即创建一个空白的GUIDE ...

  9. MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法

    在运行期间,ListBox控件突然消失,同时给出如下错误提示: Warning: single-selection listbox control requires that Value be an ...

随机推荐

  1. CSUOJ 1341 String and Arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,--,第N行,从左至右依次记为第1列,第2列,--,第N列.    对于这个矩阵会进行一系列操作,但这些操作只有两类:  ...

  2. AlertDialog对话框

    普通对话框 public void click1(View v) { //这里不能用 getApplicationContext()方法来获取上下文 AlertDialog.Builder build ...

  3. 【构造】Codeforces Round #480 (Div. 2) B. Marlin

    题意:给你一个4*n的网格,保证n为奇数,让你在其中放k个障碍物,不能放在边界的格子上,使得从左上角走到右下角的最短路的方案数,恰好等于从左下角走到右上角的最短路的方案数. k为偶数时,以纵向为对称轴 ...

  4. hdu 1518 dfs+剪枝

    题目大意:几根棒子能否组成一个正方形 Sample Input3           //测试组数4 1 1 1 1   //棒子数目以及每根棒子的长度5 10 20 30 40 508 1 7 2 ...

  5. 【洛谷】1494:[国家集训队]小Z的袜子【莫队】

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… ...

  6. Express中间件

    一.编写中间件 中间件函数能够访问请求对象(req),响应对象(res),应用程序的请求/响应循环中的下一个中间件函数.下一个中间件函数通常由名为next的变量来表示. 中间件函数可以执行以下任务: ...

  7. 【原】使用Spring自带的JdbcTemplate。

    使用Spring自带的JdbcTemplate,可以简化对数据库的操作,用起来十分方便.通过一下几个步骤的配置,即可以使用JdbcTemplate. (1)配置好Spring的数据源,加入mysql驱 ...

  8. 解决MySQL建立连接问题,快速回收复用TCP的TIME_WAIT

    最近同事遇到一个问题,使用python开发的工具在执行的时候无法和MySQL建立连接,其最直接的现象就是满篇的TIME_WAIT,最后通过调整tcp_timestamps参数问题得以解决,再次记录一下 ...

  9. Node.js学习笔记(3) - 简单的curd

    这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简 ...

  10. Redis在Windows+linux平台下的安装配置(转)

    window平台Redis安装 下载地址: http://code.google.com/p/servicestack/wiki/RedisWindowsDownload Redis文件夹有以下几个文 ...