import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class VectorDemo extends JFrame{
JTable jt;
JScrollPane sp;
DefaultTableModel dm;
public VectorDemo(Vector d,Vector v){
this.setSize(400,400);
this.setDefaultCloseOperation(3);
dm=new DefaultTableModel(d,v);
jt=new JTable(dm);
sp=new JScrollPane(jt);
this.add(sp);
this.setVisible(true);
}
public static void main(String[] args){
Vector v = new Vector();
v.add("v1");
v.add("v2");
v.add("v3");
Vector d=new Vector();
for(int i=0;i<4;i++){
Vector temp=new Vector();
for(int j=0;j<3;j++){
temp.add(i+j);
}
d.add(temp);
}
new VectorDemo(d,v);
}
}
如何使JTable中的内容不能编辑?
咱是新手,请各位高人指点,谢谢!
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class VectorDemo extends JFrame{
JTable jt;
JScrollPane sp;
DefaultTableModel dm;
public VectorDemo(Vector d,Vector v){
this.setSize(400,400);
this.setDefaultCloseOperation(3);
dm=new DefaultTableModel(d,v);
jt=new JTable(dm);
sp=new JScrollPane(jt);
this.add(sp);
this.setVisible(true);
}
public static void main(String[] args){
Vector v = new Vector();
v.add("v1");
v.add("v2");
v.add("v3");
Vector d=new Vector();
for(int i=0;i<4;i++){
Vector temp=new Vector();
for(int j=0;j<3;j++){
temp.add(i+j);
}
d.add(temp);
}
new VectorDemo(d,v);
}
}
如何使JTable中的内容不能编辑?
咱是新手,请各位高人指点,谢谢!
解决方案 »
- 正则表达式-----------------------
- 关于通过Socket实现服务器和客户端进行通信,writeObject和readObject的问题
- 4j代表什么含义?如log4j、dom4j、mmseg4j等
- list 对象(存储string 或者ip地址) 如何进行排序
- 错在哪了 学习java第二天
- 问个小问题,很简单!谢谢~
- ---java 中如何使用枚举变量-----
- StringTokenizer的使用问题,请帮忙
- 关于JAVA中线程的问题!!!!!!!!!!
- htmlparse抓取网页里面的想要信息
- 求助.!类的问题或者是参数问题.
- 谁有关于java package整体框架,java类框架图这方面的资料啊?(像MFC的组织类图的那种)
class myedit extends AbstractCellEditor implements TableCellEditor { public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return this.getTableCellEditorComponent(table, value, isSelected, row, column);
} public Object getCellEditorValue() {
return null;
} public boolean isCellEditable(EventObject e) {
return false;
} }使用方法:
jTable1.setDefaultEditor(Object.class, new myedit());
class EditTable extends DefaultTableModel {
public EditTable (Vector d,Vector n){
super(d,n);}
public boolean isCellEditable(int r,int c) {
return false;
}
}
EditTable et=new EditTable(d,v);
JTable tb=new JTable(et);
非常感谢你的指点,我会把分全部给你的.
我有个问题,想问一下,在Jtable在如何判断鼠标单击还有双击,我用了getClickCount()==1和getClickCount()==2没有任何反应,希望给指点一下,谢谢!
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.javapackage 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!");
}
}