维护表格模型

public class ExampleFrame_06 extends JFrame{

    private DefaultTableModel tableModel;
    private JTable table ;
    private JTextField aTextField;
    private JTextField bTextField;

    public ExampleFrame_06() {
        // TODO Auto-generated constructor stub
        super();
        setTitle("维护表格模型");
        setBounds(100,100,510,375);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JScrollPane scrollPane = new JScrollPane();
        getContentPane().add(scrollPane, BorderLayout.CENTER);
        String[] columnNames = {"A","B"};
        String[][] tableValues = {{"A1","B1"},{"A2","B2"},{"A3","B3"}};
        tableModel = new DefaultTableModel(tableValues, columnNames);

        table = new JTable(tableModel);
        table.setRowSorter(new TableRowSorter<>(tableModel));

        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                int selectedRow = table.getSelectedRow();
                Object oa = tableModel.getValueAt(selectedRow, 0);
                Object ob = tableModel.getValueAt(selectedRow, 1);
                aTextField.setText(oa.toString());
                bTextField.setText(ob.toString());
            }
        });

        scrollPane.setViewportView(table);
        final JPanel panel = new JPanel();
        getContentPane().add(panel,BorderLayout.SOUTH);
        panel.add(new JLabel("A: "));
        aTextField = new JTextField("A4",10);
        panel.add(aTextField);
        panel.add(new JLabel("B4",10));
        bTextField = new JTextField("B4",10);
        panel.add(bTextField);

        final JButton addbutton = new JButton("添加");
        addbutton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                String[] rowValues = {aTextField.getText(),bTextField.getText()};
                tableModel.addRow(rowValues);
                int rowCount = table.getRowCount()+1;
                aTextField.setText("A" + rowCount);
                bTextField.setText("B" + rowCount);
            }
        });

        panel.add(addbutton);

        final JButton upButton = new JButton("修改");
        upButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                int selectedRow = table.getSelectedRow();
                if(selectedRow != -1 ){
                    tableModel.setValueAt(aTextField.getText(), selectedRow, 0);
                    tableModel.setValueAt(bTextField.getText(), selectedRow, 1);
                }
            }
        });
        panel.add(upButton);

        final JButton delButton = new JButton("删除");
        delButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                int selectedRow = table.getSelectedRow();
                if(selectedRow != -1){
                    tableModel.removeRow(selectedRow);
                }
            }
        });
        panel.add(delButton);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ExampleFrame_06 exampleFrame_06 = new ExampleFrame_06();
        exampleFrame_06.setVisible(true);
    }

}

原文地址:https://www.cnblogs.com/dulute/p/10676124.html

时间: 2024-11-09 06:00:56

维护表格模型的相关文章

[Qt教程] 数据库(六)SQL关系表格模型QSqlRelationalTableMode

导语QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持.一个外键就是一个表中的一个属性和其他表中的主键属性之间的一对一的映射.例如,student表中的course属性对应的是course表中的id属性,那么就称属性course是一个外键.因为这里的course属性的值是一些数字,这样的显示很不友好,使用关系表格模型,就可以将它显示为course表中的name属性的值. 环境:Windows Xp + Qt 4.8.4+Qt

VS2012-SSAS 表格模型安全性

模型安全性与AD域账户结合之后,浏览模型出现的问题: 当对在表“Products”中定义的行级别安全性表达式求值时遇到了错误.错误消息: 当对在表“Products”中定义的行级别安全性表达式求值时遇到了错误.错误消息: The operation was cancelled by the user. (Microsoft SQL Server 2012 Analysis Services) 详细信息: 等待解决. 如果此用户既没有添加到SECURITY表,也没有添加到AD组,会出现: 已添加到

[Qt教程] 数据库(五)SQL表格模型QSqlTableModel

导语在上一篇我们讲到只读的QsqlQueryModel模型其实也可以实现编辑功能的,但是实现起来很麻烦.而QSqlTableModel提供了一个一次只能操作单个SQL表的读写模型,它是QSqlQuery的更高层次的替代品,可以浏览和修改独立的SQL表,并且只需编写很少的代码,而且不需要了解SQL语法. 环境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2 目录一.创建数据库二.修改操作三.查询操作四.排序操作五.删除操作六.插入操作 正文 一.创建数据库 1.新建Qt

Java实验--基于Swing的简单的歌曲信息管理系统(四)

原创不易,转载请注明出处. 上一篇<Java实验--基于Swing的简单的歌曲信息管理系统(三) >中,我们绘制了登录.注册和管理员主界面,本片主要讲解歌曲管理界面.第一次涉及到对表格的操作,参见的教材上的代码,具体代码如下: package test.swing; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.

个开发模型的比较

各种模型的比较 每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点. 模型 优点 缺点 瀑布模型 文档驱动 系统可能不满足客户的需求 快速原型模型 关注满足客户需求 可能导致系统设计差.效率低,难于维护 增量模型 开发早期反馈及时,易于维护 需要开放式体系结构,可能会设计差.效率低 螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练

Qt表格之Model/View实现

很多开发中都用到了表格,如何使用Qt做表格?比较简单的,我们可以使用QTableWidget,但是它有个问题,就是数据量不能太大,一旦数据量比较大的话就会带来内存问题.Qt还给我们提供了一样利器--Model/View.模型视图,接触Qt的都不会陌生,对新手来说可能不太好理解,没关系,Qt提供了强大的Assist文档和更加直观的Demo,相信看过之后使用来说就没有问题了.本篇文章来列出一个简单的例子,使用的就是表格的模型视图,在代码中给出了简单的注释说明.为什么要采用这种方式?试过的人都可以看到

html表格中的tr td th用法

表格是html中经常使用到的,简单的使用可能很多人都没问题,但是更深入的了解的人恐怕不多,下面我们先来看一下如何使用. <table>是<tr>的上层标签 <tr>必须在一个<table></table>里面,它不能单独使用,相当于<table>的属性标签. <table>标示一个表格,<tr>标示这个表格中间的一个行 <td>标示行中的一个列,需要嵌套在<tr></tr>中

python根据nagios配置文件将监控的服务联系人等信息导出到excel表格

前阵子,遇到需要把nagios监控的服务统计到表格的需求,想着如果每一次改动,都要去维护表格的话,难免会有疏漏或者问题,于是观察了nagios的host.cfg,services.cfg等配置文件写了一个脚本,包含对多个主机关联到同一个服务的处理等,脚本也有局限性,就是需要把每个主机,都归类到某个组,比如Linux主机归类到Linux组,实际环境,一般也是有这样做归类的,脚本运行过程中会有文件产生,但都很小,以下是相应模块安装和脚本文件,建议在测试机上面跑完再到实际环境跑. 一,安装xlsxwr

QT——模型/视图(model/view)

数据项中引入模型/视图架构,可以方便的将数据与表现层分开. ------------------------------------- 模型Model:一般来说,Model里面并不真正存储数据(数据少的话也可以直接存储在Model里),只是负责从诸如磁盘文件,数据库,网络通讯等获得源数据,并提供给View,View对数据进行修改,然后再通过Model更新源数据. Model 另一个重要工作时为源数据添加索引(ModelIndex).列表形式采用row/colum编号,树形式为建立父子间的层次关系