当前位置:  技术问答>java相关

使用Swing中的JTable控件,如何将其中的某个列设为不可编辑?

    来源: 互联网  发布时间:2015-01-05

    本文导语:  | 参考http://java.sun.com/docs/books/tutorial/uiswing/components/table.html 其中例子如下: import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.DefaultCellEditor; import javax.swing.JScrollPane; import javax.swing.JFrame; impo...


|
参考http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
其中例子如下:
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

import javax.swing.DefaultCellEditor;

import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.awt.*;
import java.awt.event.*;

/**
 * This is exactly like TableDemo, except that it uses a
 * custom cell editor to validate integer input.
 */
public class TableEditDemo extends JFrame {
    private boolean DEBUG = true;

    public TableEditDemo() {
        super("TableEditDemo");

        MyTableModel myModel = new MyTableModel();
        JTable table = new JTable(myModel);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));

        //Create the scroll pane and add the table to it. 
        JScrollPane scrollPane = new JScrollPane(table);

        //Set up real input validation for the integer column.
        setUpIntegerEditor(table);

        //Add the scroll pane to this window.
        getContentPane().add(scrollPane, BorderLayout.CENTER);

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    private void setUpIntegerEditor(JTable table) {
        //Set up the editor for the integer cells.
        final WholeNumberField integerField = new WholeNumberField(0, 5);
        integerField.setHorizontalAlignment(WholeNumberField.RIGHT);

        DefaultCellEditor integerEditor = 
            new DefaultCellEditor(integerField) {
                //Override DefaultCellEditor's getCellEditorValue method
                //to return an Integer, not a String:
                public Object getCellEditorValue() {
                    return new Integer(integerField.getValue());
                }
            };
        table.setDefaultEditor(Integer.class, integerEditor);
    }

    class MyTableModel extends AbstractTableModel {
        final String[] columnNames = {"First Name", 
                                      "Last Name",
                                      "Sport",
                                      "# of Years",
                                      "Vegetarian"};
        final Object[][] data = {
            {"Mary", "Campione", 
             "Snowboarding", new Integer(5), new Boolean(false)},
            {"Alison", "Huml", 
             "Rowing", new Integer(3), new Boolean(true)},
            {"Kathy", "Walrath",
             "Chasing toddlers", new Integer(2), new Boolean(false)},
            {"Mark", "Andrews",
             "Speed reading", new Integer(20), new Boolean(true)},
            {"Angela", "Lih",
             "Teaching high school", new Integer(4), new Boolean(false)}
        };

        public int getColumnCount() {
            return columnNames.length;
        }
        
        public int getRowCount() {
            return data.length;
        }

        public String getColumnName(int col) {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col) {
            return data[row][col];
        }

        /*
         * JTable uses this method to determine the default renderer/
         * editor for each cell.  If we didn't implement this method,
         * then the last column would contain text ("true"/"false"),
         * rather than a check box.
         */
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }

        /*
         * Don't need to implement this method unless your table's
         * editable.
         */
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (col 

    
 
 

您可能感兴趣的文章:

  • 如何在Ubuntu中使用WebBrowser控件
  • [QT]QTableWidget中如何使用QComboBox控件?
  • 请问:如何在java中的jtree控件中使用checkbox
  • 哪位高手能提供一个类似cell的控件(在java下使用)?
  • 实现DataGridView控件中CheckBox列的使用实例
  • android开发教程之switch控件使用示例
  • jsp中如何使用控件,用过的高手给个例子看看。定给分!!!先谢了。。。
  • 使用jspsmartupload时,包含FILE控件的form是否必须写ENCTYPE属性,等待...
  • Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例
  • 浅析c#中WebBrowser控件的使用方法
  • 如何使用控件数组?
  • Cocos2d-x UI开发之CCControlSwitch控件类使用实例
  • vb.net使用DataGrid控件访问数据库的例子
  • Cocos2d-x UI开发之CCControlSlider控件类使用实例
  • Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
  • C#中Timer定时器控件的使用方法
  • js之ActiveX控件使用说明 new ActiveXObject()
  • Android控件系列之Shape使用方法
  • C#使用RenderControl将GridView控件导出到EXCEL的方法
  • Android AutoCompleteTextView控件使用实例
  • 为什么 非root 不可使用xwindows.
  • 我的第一个JAVA程序还是不可使用!是否与我的TOMCAT 4.0 的STARTUP.BAT 运行失败有关系!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在终端下使用vi,在编辑模式下使用方向敲箭头,但出来的是A、B、C、D,为什么?
  • Android控件系列之Shape使用方法 iis7站长之家
  • 编辑menu.lst 使用grub 引导windows
  • Linux下能否使用CuteEditor这款编辑器
  • 请问Linux下面有像UltraEdit一样使用方便的编辑器吗?
  • 有谁使用过cgywin吗?它有文字编辑的执行文件吗?
  • 我使用的是root用户登陆,但却不能编辑/etc/profile文件,该如何解决。
  • 在telnet下如何使用VI编辑器?
  • 新手关于Jbuilder6.0编辑器的光标定位使用问题,望高手解答
  • ◆vi命令怎么使用?怎么从vi编辑环境中退出来?◆
  • 大家修改内核时使用哪个编辑器?
  • 虚拟机Linux下使用编辑/etc/auto.master的问题
  • 请教如何在LINUX下使用中文输入法编辑文档啊?
  • jsp 中如何使用word进行编辑?
  • vim生成的.cpp~是什么文件?我使用vim编辑的时候出现了好多.cpp~文件
  • 使用Vi编辑Makefile时,目标属性问题
  • 老生长谈的问题: 请教vi编辑器使用技巧
  • 使用vi编辑文件,输错了,使用backspace删除,结果出现乱码,求解决办法。。。
  • 使用#default#userdata组件实现的可记忆内容的编辑器
  • linux shell编辑里如何使用环境变量
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3