怎么使JTable中用户选中的任意一行信息不能编辑啊?? 就是在把数据库信息放在了JTable中,用户选择其中任何一条信息后单击“审核”按钮后,让该信息(也就是用户选中的这行中的单元格)不能编辑,表示用户选择的这条信息已经通过了,不能编辑了。哪位大侠帮帮忙???小弟很急。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个简单的例子:import java.awt.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;public class MyTable extends JFrame{ public MyTable() { this.setLayout(new BorderLayout()); this.setSize(new Dimension(400,300)); final String[][] data = new String[][]{ {"1","passed"}, {"2","failed"}, {"3","passed"}, {"4","unknown"}, }; String[] columnNames = new String[]{"ID","Status"}; DefaultTableModel model = new DefaultTableModel(data,columnNames){ @Override public boolean isCellEditable(int row, int column) { return !("passed".equals(data[row][1])); } }; JTable table = new JTable(); table.setModel(model); this.add(table, BorderLayout.NORTH); this.setVisible(true); } public static void main(String[] args){ MyTable mt = new MyTable(); }} public boolean isCellEditable(int row, int column) { return !("passed".equals(data[row][1])); } 这个方法不是要继承JTable并且实现该方法吗??里面的return语句表示什么意思啊??我是想让用户选择其中任何一条信息后单击“审核”按钮后,让该信息不能编辑。 能帮忙具体写写代码吗??谢谢了。我写了一下,但是没成功!希望大侠们帮帮忙!!!!if(e.getActionCommand().equals("审核")){ boolean f=new MyTableModel().isCellEditable(rows,0);//调用 if(f==true){ ???????????判断好像出错了,不会判断 System.out.println("成功"); }else{ System.out.println("失败"); } }class MyTableModel extends DefaultTableModel{ public boolean isCellEditable(int row, int column) { row = table.getSelectedRow(); //得到用户选定的那一行 gb_h=table.getValueAt(row, 0).toString(); //得到用户选定的那一行的第一个字段值 gx_m=table.getValueAt(row, 1).toString(); //得到用户选定的那一行的第二个字段值 gd_h=table.getValueAt(row, 2).toString(); //得到用户选定的那一行的第三个字段值 gemail=table.getValueAt(row, 3).toString(); //得到用户选定的那一行的第四个字段值 return !(gb_h.equals(data[row][0])&&gx_m.equals(data[row][1])&&gd_h.equals(data[row][2])&&gemail.equals(data[row][3])); }} 我的妈,2008年的帖子,现在都2011年了,还是说一下吧。boolean f=new MyTableModel().isCellEditable(rows,0);//调用应该不能这样写吧。DefaultTableModel 你知道吧,里面的一个方法isCellEditable是干什么的你也应该知道吧,其实你每一次点击table中的某一行程序都会运行这个方法,楼主你要点击“审核”之后才能使这一行能编辑,那么就是说你之前已经点击并选中了table中的某一行数据了,这必定是没办法实现改行可编辑的功能了。那怎么办呢?你想办法能在点击“审核”这个按钮之前抢先改变isCellEditable中的false返回条件。我知道我说的很模糊,但我就是这样处理的。我想你一定早就解决这个问题了吧! 急!急!~~~两数组排序 Swing组件显示的问题 关于facade模式 求教:java中的输出问题 java中有没有类似server.HTMLEncode的函数 继续问,rmi启动服务异常 关于String类的小问题! 关于对象序列化 请教java调用存储过程的问题! Java的Class类是类的类吗? eclips的大括号问题 文件夹同步的代码
import java.awt.*;import javax.swing.*;
import javax.swing.table.DefaultTableModel;public class MyTable extends JFrame{
public MyTable() {
this.setLayout(new BorderLayout());
this.setSize(new Dimension(400,300));
final String[][] data = new String[][]{
{"1","passed"},
{"2","failed"},
{"3","passed"},
{"4","unknown"},
};
String[] columnNames = new String[]{"ID","Status"};
DefaultTableModel model = new DefaultTableModel(data,columnNames){
@Override
public boolean isCellEditable(int row, int column) {
return !("passed".equals(data[row][1]));
}
};
JTable table = new JTable();
table.setModel(model);
this.add(table, BorderLayout.NORTH);
this.setVisible(true);
}
public static void main(String[] args){
MyTable mt = new MyTable();
}}
return !("passed".equals(data[row][1]));
}
这个方法不是要继承JTable并且实现该方法吗??
里面的return语句表示什么意思啊??我是想让用户选择其中任何一条信息后单击“审核”按钮后,让该信息不能编辑。
能帮忙具体写写代码吗??谢谢了。
我写了一下,但是没成功!
希望大侠们帮帮忙!!!!
if(e.getActionCommand().equals("审核")){
boolean f=new MyTableModel().isCellEditable(rows,0);//调用
if(f==true){ ???????????判断好像出错了,不会判断
System.out.println("成功");
}else{
System.out.println("失败");
}
}
class MyTableModel extends DefaultTableModel{
public boolean isCellEditable(int row, int column) {
row = table.getSelectedRow(); //得到用户选定的那一行
gb_h=table.getValueAt(row, 0).toString(); //得到用户选定的那一行的第一个字段值
gx_m=table.getValueAt(row, 1).toString(); //得到用户选定的那一行的第二个字段值
gd_h=table.getValueAt(row, 2).toString(); //得到用户选定的那一行的第三个字段值
gemail=table.getValueAt(row, 3).toString(); //得到用户选定的那一行的第四个字段值
return !(gb_h.equals(data[row][0])&&gx_m.equals(data[row][1])&&gd_h.equals(data[row][2])&&gemail.equals(data[row][3]));
}
}
boolean f=new MyTableModel().isCellEditable(rows,0);//调用
应该不能这样写吧。
DefaultTableModel 你知道吧,里面的一个方法isCellEditable是干什么的你也应该知道吧,其实你每一次点击table中的某一行程序都会运行这个方法,楼主你要点击“审核”之后才能使这一行能编辑,那么就是说你之前已经点击并选中了table中的某一行数据了,这必定是没办法实现改行可编辑的功能了。
那怎么办呢?
你想办法能在点击“审核”这个按钮之前抢先改变isCellEditable中的false返回条件。
我知道我说的很模糊,但我就是这样处理的。我想你一定早就解决这个问题了吧!