JTable的添加行插入行以及JTable的单击和双击事件
来源:互联网 发布:淘宝怎么搜索小电影 编辑:程序博客网 时间:2024/04/29 08:18
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class JTableTest extends JFrame {
class TableTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 679265889547674796L;
public final String[] COLUMN_NAMES = new String[] {"列0", "列1", "列2", "列3"};
public TableTableModel()
{
}
public int getColumnCount() {
return COLUMN_NAMES.length;
}
public String getColumnName(int columnIndex) {
return COLUMN_NAMES[columnIndex];
}
// 将Table设成只读的
public boolean isCellEditable(int row,
int column)
{
return false;
}
}
private JTable table;
private int i = 0;
private int j = 0;
private int rowI = -1;
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
JTableTest frame = new JTableTest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the frame
*/
public JTableTest() {
super();
setTitle("JTable Test");
getContentPane().setLayout(null);
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 28, 460, 271);
getContentPane().add(scrollPane);
table = new JTable();
table.setShowGrid(true);
table.addMouseListener(new UserMouseAdapter() {
/** *//**
* 鼠标单击事件
* @param e 事件源参数
*/
public void mouseSingleClicked(MouseEvent e){
//System.out.println("Single Clicked!");
rowI = table.rowAtPoint(e.getPoint());// 得到table的行号
if (rowI > -1)
System.out.println("单击鼠标 "+((TableTableModel)table.getModel()).getValueAt(rowI, 0));
}
/** *//**
* 鼠标双击事件
* @param e 事件源参数
*/
public void mouseDoubleClicked(MouseEvent e){
//System.out.println("Doublc Clicked!");
rowI = table.rowAtPoint(e.getPoint());// 得到table的行号
if (rowI > -1)
System.out.println("双击鼠标 "+((TableTableModel)table.getModel()).getValueAt(rowI, 0));
}
});
table.setModel(new TableTableModel());
scrollPane.setViewportView(table);
final JButton button = new JButton();
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0) {
((TableTableModel)table.getModel()).addRow(new String[] {"行"+(i++),"含一","行2","行3"});
}
});
button.setText("添加一行");
button.setBounds(10, 308, 99, 23);
getContentPane().add(button);
final JButton button_1 = new JButton();
button_1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0) {
((TableTableModel)table.getModel()).insertRow((rowI>=0?rowI:0),new String[] {"插入行"+(j++),"插入行1","插入行2","插入行3"});
}
});
button_1.setText("插入行");
button_1.setBounds(121, 308, 99, 23);
getContentPane().add(button_1);
}
}
//UserMouseAdapter.java
package test.table;
import java.awt.event.*;
/**
*用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!
*/
public class UserMouseAdapter
extends java.awt.event.MouseAdapter {
private boolean flag=false;//用来判断是否已经执行双击事件
private int clickNum=0;//用来判断是否该执行双击事件
public void mouseClicked(MouseEvent e) {
final MouseEvent me=e;//事件源
this.flag=false;//每次点击鼠标初始化双击事件执行标志为false
if (this.clickNum == 1) {//当clickNum==1时执行双击事件
this.mouseDoubleClicked(me);//执行双击事件
this.clickNum=0;//初始化双击事件执行标志为0
this.flag=true;//双击事件已执行,事件标志为true
return;
}
//定义定时器
java.util.Timer timer=new java.util.Timer();
//定时器开始执行,延时0.2秒后确定是否执行单击事件
timer.schedule(new java.util.TimerTask(){
private int n=0;//记录定时器执行次数
public void run() {
if(flag){//如果双击事件已经执行,那么直接取消单击执行
n=0;
clickNum=0;
this.cancel();
return;
}
if (n == 1) {//定时器等待0.2秒后,双击事件仍未发生,执行单击事件
mouseSingleClicked(me);//执行单击事件
flag = true;
clickNum=0;
n=0;
this.cancel();
return;
}
clickNum++;
n++;
}
},new java.util.Date(),200); // 设置延迟时间
}
/** *//**
* 鼠标单击事件
* @param e 事件源参数
*/
public void mouseSingleClicked(MouseEvent e){
//System.out.println("Single Clicked!");
}
/** *//**
* 鼠标双击事件
* @param e 事件源参数
*/
public void mouseDoubleClicked(MouseEvent e){
//System.out.println("Doublc Clicked!");
}
}
- JTable的添加行插入行以及JTable的单击和双击事件
- jtable 单击双击事件一起加
- JTable实现双击删除行的方法
- Swing表格JTable通过JTableModel插入行
- 鼠标事件改变JTable的行高
- jTable选择的行改变事件
- 控件的单击事件和双击事件
- jtable的鼠标事件监听
- JTable的清空小技巧以及JTable的详细介绍
- JTable的清空小技巧以及JTable的详细介绍
- 单击和双击事件的冲突处理
- 单击和双击事件的冲突处理
- 禁用CMFCRibbonApplicationButton的单击和双击事件
- GridView同时支持行单击和双击事件的
- JTable的排序和过滤
- JCheckBox 和 JTable 的使用
- GridView行的单击/双击事件
- jQuery 添加单击和双击事件
- 在ubuntu中安装lumaqq 2006
- 正则表达式语法
- 成幻Online Judge 1.00 源代码下载 [20070804]
- ASP精华代码
- CSS应用常见问题
- JTable的添加行插入行以及JTable的单击和双击事件
- Flash Action Script事件
- 《C++0x漫谈》系列之:右值引用或“move语意与完美转发”(上)
- mssqlserver基本sql语句
- innerText,innerHTML的用法
- 一些常用的显示文本格式代码
- CISCO3640路由器配置参考
- Asp.net常用的51个代码
- 端口大全及端口关闭方法