如何将JTable 设置为不可用,就像JButton一样能够变灰?? 我想使JTable变灰,就像使用JTextField.setEnabled(false)一样,但是用JTable.setEnabled(false)却没效果,到网上搜索了大片的资料,似乎没有一个很好的解决办法,请大家指教一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不清楚誒~ 估計要設定字體的顏色吧~~ jctable應該很好實現~ 但是jtable就不知道了~ 楼主的意思是想让JTable中的单元格不可编辑吧?JTable中单元格是否可以编辑,是由其isCellEditable()方法决定的。更准确的说法是由其TableModel的isCellEditable()方法决定的。所以要想让JTable中的单元格不可编辑,必须重写JTable或其TableModel的isCellEditable()方法。该方法可以根据需要,控制全表、某行、某列甚至某个单元格可否被编辑。以下是一个简单的例子,让全表的单元格都不可以被编辑:import javax.swing.*;import javax.swing.table.*;public class MainFrame extends JFrame { private Object[][] data = { {"张三", "[email protected]"}, {"李四", "[email protected]"} }; private String[] columnNames = { "姓名", "邮箱" }; private TableModel tableModel = new DefaultTableModel(data, columnNames){ public boolean isCellEditable(int row, int column) { //限制所有单元格不可编辑 return false; //如果要限制第一列不可编辑,则可以这样写 //return column != 0; } }; private JTable tblEmp = new JTable(tableModel); private JPanel contentPane; public MainFrame() { super("不可编辑的表格"); setSize(400,300); // contentPane = (JPanel) getContentPane(); JScrollPane pnlMain =new JScrollPane(tblEmp); contentPane.add(pnlMain); } public static void main(String[] args) { MainFrame f = new MainFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLocationRelativeTo(null); f.setVisible(true); }} 回楼上各位,你们提到的办法我都想到了,但没有想到一个问题:如果JTable上绑定了事件的话,那你们的方法就不行了。我想要JTable变灰,就是想让绑定在JTable上的事件失效。 to horizonlyhw :jctable是什么控件,有没有源码? 绑定在JTable上的事件?JTable本身就已经具备的功能?楼主莫非想让JTable没法点击(或选中)?还是别的什么需求? jtable.setEnabled(false);这样设置成不可编辑的话,绑定在jtable上的事件还能用吗?好像不行吧? 恩 要重写它的方法 isCelling方法 如果是列和行不可编辑的话 回accp206,我在JTable上添加了MouseListener,单击JTable的行,行中的数据就填到JTextField中,然后可以在JTextField中进行数据的修改,同时JTable要置为没法点击的状态;再点击"提交"按钮,将修改后的数据提交到数据库,同时JTable设置为可以点击的状态.你说的让JTable没法点中,这正是我想要的效果。 JTable.setEnabled(false)后,绑定在JTable上的事件还是能够被触发,我测试过了的 楼上的没仔细看需求,不是让JTable不可编辑,而是让JTable不可被点击. 在你的MouseListener中做个判断,只有JTable的isEnabled()返回true时才进行操作,即可。这样,当你对JTable进行setEnabled(false)之后,虽然你的监听器还在工作,但已不会做出处理啦。 要不然,你就只能频繁地removeMouseListener,然后在需要时再addMouseListener,那就太笨拙啦。呵呵。 是啊,想过removeMouseListener,也是嫌太麻烦,所以不想这么写,不知道有什么更好的办法!!唉!想想这个swing的JTable,连个最平常的enabled都不支持,而这个JTable 是最常用的一个组件。不知道还有社么办法解决,bwt:不想把这个功能做得太复杂,因为这是setEnabled是最常用的功能啊 是个好办法,应该是可以控制JTable事件的触发,但,界面上不好看,因为JTable还是很够被点击,只是点击后不能触发事件 上面太长了就不看了,完成你的第一个目的变灰色上面好像有兄弟说了禁用cell或者改变颜色,这个容易想到完成你的第二个目的,disabled在jtable上面做事件监听,做个变量用于保持当前jtable是否是disabled状态在事情里面判断下如果是的话事件就直接return就行了 初学者错误求助 关于2d array! 十分感谢! 初学java一题,请教! 通过一个具体的年份和月份,想得到这个月份具体有几天。 小弟初学JAVA,这句话实在想不通是什么意思,求大侠相助,谢谢了 请问如何实现jtree得刷新呢 java编译器提示没有Java.io.的包怎么办?? 做个校园一卡通的项目,却没有思路 java入门小游戏 小问题,如何把这个APPLET改写成APPLICATION? 生手请教 分享一本不错的书<<The Definitive Guide to Java Swing Edition Third Edition>> JAVA 小问题
JTable中单元格是否可以编辑,是由其isCellEditable()方法决定的。更准确的说法是由其TableModel的isCellEditable()方法决定的。
所以要想让JTable中的单元格不可编辑,必须重写JTable或其TableModel的isCellEditable()方法。该方法可以根据需要,控制全表、某行、某列甚至某个单元格可否被编辑。
以下是一个简单的例子,让全表的单元格都不可以被编辑:import javax.swing.*;
import javax.swing.table.*;public class MainFrame extends JFrame {
private Object[][] data = {
{"张三", "[email protected]"},
{"李四", "[email protected]"}
};
private String[] columnNames = { "姓名", "邮箱" };
private TableModel tableModel = new DefaultTableModel(data, columnNames){
public boolean isCellEditable(int row, int column) {
//限制所有单元格不可编辑
return false;
//如果要限制第一列不可编辑,则可以这样写
//return column != 0;
}
};
private JTable tblEmp = new JTable(tableModel);
private JPanel contentPane;
public MainFrame()
{
super("不可编辑的表格");
setSize(400,300);
//
contentPane = (JPanel) getContentPane();
JScrollPane pnlMain =new JScrollPane(tblEmp);
contentPane.add(pnlMain);
} public static void main(String[] args) {
MainFrame f = new MainFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
我想要JTable变灰,就是想让绑定在JTable上的事件失效。
jctable是什么控件,有没有源码?
绑定在JTable上的事件?JTable本身就已经具备的功能?楼主莫非想让JTable没法点击(或选中)?还是别的什么需求?
你说的让JTable没法点中,这正是我想要的效果。
JTable.setEnabled(false)后,绑定在JTable上的事件还是能够被触发,我测试过了的
楼上的没仔细看需求,不是让JTable不可编辑,而是让JTable不可被点击.
在你的MouseListener中做个判断,只有JTable的isEnabled()返回true时才进行操作,即可。
这样,当你对JTable进行setEnabled(false)之后,虽然你的监听器还在工作,但已不会做出处理啦。
唉!想想这个swing的JTable,连个最平常的enabled都不支持,而这个JTable 是最常用的一个组件。
不知道还有社么办法解决,
bwt:不想把这个功能做得太复杂,因为这是setEnabled是最常用的功能啊
上面好像有兄弟说了禁用cell或者改变颜色,这个容易想到
完成你的第二个目的,disabled
在jtable上面做事件监听,做个变量用于保持当前jtable是否是disabled状态
在事情里面判断下如果是的话
事件就直接return就行了