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. tp5总结(一)

    https://github.com/ABCDdouyaer/tp5-1 1.下载composer 安装框架 也可以安装包或者git安装 composer create-project topthin ...

  2. 评分卡模型中的IV和WOE详解

    1.IV的用途   IV的全称是Information Value,中文意思是信息价值,或者信息量. 我们在用逻辑回归.决策树等模型方法构建分类模型时,经常需要对自变量进行筛选.比如我们有200个候选 ...

  3. JMeter导入jmx运行脚本时出现这样的错误jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.converters.ConversionException:

    2016/12/20 13:51:55 ERROR - jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.conve ...

  4. WIN8+VS2013编写发布WCF、一(编写)、二(部署)、三(调用)

    原文://http://www.cnblogs.com/tntboom/p/4348483.html 引言:上学期因为写服务器用WCF,所以连查资料再瞎调试勉强成功了,但是这学期又到了用WCF的时候, ...

  5. 5.5版本以上”No input file specified“问题解决

    .htaccess文件中的 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 在默认情况下会导致No input file specified. 修改成 Rewri ...

  6. JVM快速入门

    最近开始了全面的JAVA生态环境学习,因此,JVM的学习是必不可少的一个环节.和.NET的CLR一样,一起的JAVA应用均跑在JVM虚拟机上,不过相对我们只能干看看的CLR,JVM有很大的灵活性,可以 ...

  7. sql find duplicate

    SELECT GUID, COUNT(*) FROM xx GROUP BY GUID HAVING COUNT(*) > 1; SELECT name, email, COUNT(*) FRO ...

  8. alpha冲刺阶段博客集合

    作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队) 团队名称: 那周余嘉熊掌将得队 作业目标:作业集合 团队信息: 队员学号 队员姓名 博客地址 备注 2216 ...

  9. hdu 4557 暴力

    题意: 作为2013年699万应届毕业生中的一员,由于宏观经济的不景气,小明在毕业当天就华丽丽地失业了! 经历了千难万苦的求职过程,小明特别能理解毕业生的就业之难,所以,他现在准备创建一家专门针对IT ...

  10. bzoj 2150 最小路径覆盖

    最小路径覆盖问题是:给定一个DAG,该DAG的一个路径覆盖是一个路径的集合,使得每个点属于且仅属于其中一条路径,问题就是求一个大小最小的路径集合. 做法是将每个点A拆成两个点A1,A2,如果A-> ...