[java] jtable更新数据的问题

问题描述

[java] jtable更新数据的问题

package bms;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.BorderLayout;
import javax.swing.border.TitledBorder;
import javax.swing.UIManager;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JTextField;
import java.awt.Insets;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class test extends JFrame {

static Vector<String> columnNames=new Vector<String>();
static Vector cellData=new Vector();
JPanel panel = new JPanel();
JTable table = new JTable(cellData,columnNames);
private JScrollPane jsp=new JScrollPane(table);
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
static database db=new database();
static ResultSet res=null;
private JTextField textField_3;

public static void main(String[] args) {
    update("*");

    test window = new test();
    window.setVisible(true);
}

public static void update(String temp)
{
    columnNames.clear();
    cellData.clear();
    ResultSetMetaData rsmd;
    try{
        res=db.sta.executeQuery("select "+temp+" from Books");
        rsmd=res.getMetaData();
        for (int i = 1; i <= rsmd.getColumnCount(); ++i)
            columnNames.addElement(rsmd.getColumnName(i));//存储名字
        while (res.next()) {
            Vector<String> currow = new Vector<String>();
            for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
                currow.addElement(res.getString(i));
            }
            cellData.addElement(currow);
        }
    }catch(SQLException e)
    {
        e.printStackTrace();
    }
}

public test()
{
    setTitle("Book Management System");
    this.setBounds(100,100, 800,600);
    GridBagLayout gridBagLayout = new GridBagLayout();
    gridBagLayout.columnWidths = new int[]{0, 0};
    gridBagLayout.rowHeights = new int[]{325, 0, 0};
    gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
    gridBagLayout.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
    getContentPane().setLayout(gridBagLayout);

    GridBagConstraints gbc_panel = new GridBagConstraints();
    gbc_panel.insets = new Insets(0, 0, 5, 0);
    gbc_panel.fill = GridBagConstraints.BOTH;
    gbc_panel.gridx = 0;
    gbc_panel.gridy = 0;
    panel.setBorder(new TitledBorder(null, "图书目录:", TitledBorder.LEFT, TitledBorder.TOP, null, null));
    getContentPane().add(panel, gbc_panel);
    panel.setLayout(new BorderLayout(0, 0));

    panel.add(jsp);

    JPanel panel_1 = new JPanel();
    panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "检索 增加", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
    GridBagConstraints gbc_panel_1 = new GridBagConstraints();
    gbc_panel_1.fill = GridBagConstraints.BOTH;
    gbc_panel_1.gridx = 0;
    gbc_panel_1.gridy = 1;
    getContentPane().add(panel_1, gbc_panel_1);
    GridBagLayout gbl_panel_1 = new GridBagLayout();
    gbl_panel_1.columnWidths = new int[]{0, 0, 126, 0, 0, 136, 78, 98, 0, 0};
    gbl_panel_1.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0};
    gbl_panel_1.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
    gbl_panel_1.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
    panel_1.setLayout(gbl_panel_1);

    JLabel lblNewLabel = new JLabel("书名:");
    GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
    gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
    gbc_lblNewLabel.gridx = 1;
    gbc_lblNewLabel.gridy = 1;
    panel_1.add(lblNewLabel, gbc_lblNewLabel);

    textField = new JTextField();
    GridBagConstraints gbc_textField = new GridBagConstraints();
    gbc_textField.insets = new Insets(0, 0, 5, 5);
    gbc_textField.fill = GridBagConstraints.BOTH;
    gbc_textField.gridx = 2;
    gbc_textField.gridy = 1;
    panel_1.add(textField, gbc_textField);
    textField.setColumns(10);

    JLabel label = new JLabel("作者:");
    GridBagConstraints gbc_label = new GridBagConstraints();
    gbc_label.anchor = GridBagConstraints.EAST;
    gbc_label.insets = new Insets(0, 0, 5, 5);
    gbc_label.gridx = 4;
    gbc_label.gridy = 1;
    panel_1.add(label, gbc_label);

    textField_3 = new JTextField();
    GridBagConstraints gbc_textField_3 = new GridBagConstraints();
    gbc_textField_3.insets = new Insets(0, 0, 5, 5);
    gbc_textField_3.fill = GridBagConstraints.BOTH;
    gbc_textField_3.gridx = 5;
    gbc_textField_3.gridy = 1;
    panel_1.add(textField_3, gbc_textField_3);
    textField_3.setColumns(10);

    JLabel lblNewLabel_1 = new JLabel("图书室:");
    GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
    gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5);
    gbc_lblNewLabel_1.gridx = 1;
    gbc_lblNewLabel_1.gridy = 3;
    panel_1.add(lblNewLabel_1, gbc_lblNewLabel_1);

    textField_1 = new JTextField();
    GridBagConstraints gbc_textField_1 = new GridBagConstraints();
    gbc_textField_1.insets = new Insets(0, 0, 5, 5);
    gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
    gbc_textField_1.gridx = 2;
    gbc_textField_1.gridy = 3;
    panel_1.add(textField_1, gbc_textField_1);
    textField_1.setColumns(10);

    JButton button = new JButton("检索");
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
                update("Book_Name");
                db.close();
        }
    });
    GridBagConstraints gbc_button = new GridBagConstraints();
    gbc_button.fill = GridBagConstraints.BOTH;
    gbc_button.insets = new Insets(0, 0, 5, 5);
    gbc_button.gridx = 7;
    gbc_button.gridy = 1;
    panel_1.add(button, gbc_button);

    JButton button_1 = new JButton("返回");
    button_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }
    });
    GridBagConstraints gbc_button_1 = new GridBagConstraints();
    gbc_button_1.fill = GridBagConstraints.BOTH;
    gbc_button_1.insets = new Insets(0, 0, 5, 5);
    gbc_button_1.gridx = 7;
    gbc_button_1.gridy = 3;
    panel_1.add(button_1, gbc_button_1);

    JLabel lblNewLabel_2 = new JLabel("出版社:");
    GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints();
    gbc_lblNewLabel_2.insets = new Insets(0, 0, 0, 5);
    gbc_lblNewLabel_2.gridx = 1;
    gbc_lblNewLabel_2.gridy = 5;
    panel_1.add(lblNewLabel_2, gbc_lblNewLabel_2);

    textField_2 = new JTextField();
    GridBagConstraints gbc_textField_2 = new GridBagConstraints();
    gbc_textField_2.insets = new Insets(0, 0, 0, 5);
    gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
    gbc_textField_2.gridx = 2;
    gbc_textField_2.gridy = 5;
    panel_1.add(textField_2, gbc_textField_2);
    textField_2.setColumns(10);
}

}


这是我的代码。。我想在调用update()的时时候实现table内容的变更,但是现在实现不了,总是变化不了。。。
我试过在监听器updata("Book_Name")后面加上table.updateUI();,但是会报错:Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
求大神啊。。应该怎么解决啊。。

解决方案

参考:http://blog.sina.com.cn/s/blog_6d8189930100ur9w.html

解决方案二:

ArrayIndexOutOfBoundsException说明索引下标越界了。

解决方案三:

但是我调试的时候没有找到越界的地方啊。。我的代码里面没有涉及到对vector明确指定下标额,求指点。。

解决方案四:

update之后,在渲染一下!!

时间: 2024-09-13 10:53:59

[java] jtable更新数据的问题的相关文章

实例讲解Java批量插入、更新数据_java

Java的批量添加数据,多个字段同时添加多条数据,我不知道你遇到过没有.今天我们就以一个具体的实例来说一下Java的批量添加数据,面向的是Oracle数据库. 前台页面: <span style="font-size:14px;"><body class="main_body" scroll="no"> <div class="employee_gun_dong"> <form nam

java 参数的传递 更新数据

问题描述 java 参数的传递 更新数据 有一个程序,数据的更新需要传递参数,但是再当前页面无法传递参数,我要怎么实现参数的传递 解决方案 不知道你说的当前页面无法传递参数是什么意思,传不过去参数,会不会因为form没有设置method="POST"或者是GET,又或者你使用了ajax没有配置正确. java中前台有request,application,session,cookie等四大页面对象,有时也会通过隐藏的input标签(hidden属性)存储值 解决方案二: 不能传递参数,

java在txt里怎么更新数据啊

问题描述 java在txt里怎么更新数据啊 30C 这是一个模拟atm的 一行三个值 分别是账户 密码 和余额我可以从txt里读出数据 就是不知道取了钱.存了钱以后我该怎么更新txt里的数据 package atm;/** * Created by lenovo on 2016/5/5. */import java.awt.List;import java.io.*;import java.util.HashMap;import java.util.Scanner;public class c

java jtable数据排序问题

问题描述 java jtable数据排序问题 我要让表格中的一列数据以数据类型进行排序,需要重写defaulttable的getcolunmnClass的方法,但是我的数据是先点击一个按钮再传输进去的,这样如果先重写那个方法,此时列表中的数据为Null,会报错,那么应该怎么办呢? 解决方案 Java 中JTable 数据刷新问题 解决方案二: 在后台就让数据以类型排序呗

开发者论坛一周精粹(第十五期):Oracle发布多个Java漏洞更新-2017年7月

第十五期(2017年7月17日-2017年7月23日 ) 2017年7月18日,Oracle官方发布了2017年7月份的安全公告,安全公告中报告了多个漏洞,远程用户可以访问和修改目标系统上的数据,或可以在目标系统上获得提升的权限,或导致目标系统上的拒绝服务,涉及到的安全漏洞较多,安全风险较高. [漏洞公告]Oracle发布多个Java漏洞更新-2017年7月 https://bbs.aliyun.com/read/322152.html 您的MySQL数据在裸奔中吗?来不及了,快上车 https

mysql- Mybatis select 没有获取更新数据 (缓存 ?)

问题描述 Mybatis select 没有获取更新数据 (缓存 ?) 写了一个简单的mybatis demo,没有集成其他事务管理,对接mysql数据库. 在表file_resources的mapper里面定义了一个这样的嵌套sql , 里面用到了 postinfo . poststatus两个表 </select> <select id=""selectPendingPostItemCount"" resultType=""

java-新手求教,freesql能够更新数据吗?

问题描述 新手求教,freesql能够更新数据吗? 初学Java ssh,只做过用freesql进行查询的,现在要实现更新数据的功能,请教大神用freesql可以做吗?求具体方法和代码,感激不尽,在线急等 解决方案 可以的,不但可以查询,也可以修改的.

android/java 数据库中数据如何生成选择题

问题描述 android/java 数据库中数据如何生成选择题 现有数据库中数据形式是这样的:key 名字:translation 解释: 如何**随机**取出其中一条数据的key为题目,translation为一个正确选项,再取出另外3条数据的translation作为错误选项,生成选择题,并且正确选项会随机出现在ABCD任意位置? 哪位大神可以解答一下我的问题?提供一个思路...先谢谢啦~ 解决方案 首先获取随机题目:随机题目id可以使用这样获取int a=(int) (Math.rando

java 数据库更新没反应

问题描述 java 数据库更新没反应 我写了这段代码.为什么数据库那边数据没更新呢. 解决方案 看看这个的写法,http://www.cnblogs.com/hongten/archive/2011/06/19/2084696.html. 解决方案二: 你的查询语句可以查询到数据吗 解决方案三: 事务没有提交吧 解决方案四: 还可以在数据库里追踪看一下,是否有语句执行,执行的是什么 解决方案五: hql里面的冒号... 解决方案六: 你写的是select语句啊,跟 更数据没半毛关系 解决方案七: