这个是我Java实验课要做的东西,但是却被JTable的刷新问题给恶心到了

其实原版的代码中,刷新按钮并不是和JTable在同样一个JPanel中,而是和其他三个增删改的按钮在一起的,但是再写刷新功能的时候发现,因为无法获取到另一个JPanel中的组件信息,而不知道该如何实现刷新功能,以至于研究许久之后,才决定把刷新按钮放在了JTable所属的JPanel中。

flushBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object[][] stu = getStuInfo();
                String[] tableHeader = getTableHeader();
                DefaultTableModel model = (DefaultTableModel) table.getModel();
                model.setDataVector(stu, tableHeader);
                //这里是为了防止刷新之后重新设置列宽
                table.getColumnModel().getColumn(2).setPreferredWidth(160);
                table.updateUI();
 

getStuInfo是获取到表格的具体信息

getTableHeader获取标头的信息

我这里是重新刷新整个表格的内容包括表头

重新定义一个 空的DefaultTableModel

然后再使用model.setDataVector(stu,tableHeader) 进行放入

最后再使用table.updateUI 来刷新界面

期间用了其他的什么repaint,validate啊之类的都行不同。

要写一个图书管理系统的查询功能。 需求:输入关键字,点击搜索按钮后查询数据库,在JTable刷新查询的结果。 查询实现方式:在JPanel上添加JScrollPane,把JTable 添加到scroll上去。 尝试过的方法: 清除JPanel上的组件过后添加上新的数据 JTable table = ...; // 提交查询后返回新的数据填入table JScrollPane scroll =... 主要涉及到JTable,DefaultTableModel,RowFileter等类;使用场景:对图书的搜索和删改,其图书数据用JTable放入;其,搜索后会显示出更据关键词出来的信息;然后如果关键词为“”,即空字符串;在点击搜索就等于显示全部;bug:不输入任何数据点击搜索时数据不会改变,或者直接没了;总之不能显示所有数据; 在swing程序,我们想实现一个随着任务的执行而同步更新组件的功能,如果在主线程(EDT)直接执行任务并更新组件,则会导致组件只显示最终更新的状态的问题,这是因为EDT是单线程的,在执行耗时任务时会导致线程阻塞,无法即使更新swing组件。为了实现这一功能,我们需要采用后台线程去执行任务,执行之后同步给EDT线程的方案,具体实现的话,我们可以使用 SwingWorker 这个函数在执行后台任务的同时实现组件的实时更新。 packagecom.longyg.test;public class MainFrame extendsjavax.swing.JFrame {publicMainFrame() {initComponents();}@SuppressWarnings("unchecked")//private voidinitComponents() {jLabel= newjavax.swing.JLabe... 在Java Swing编程,往往会遇到需要动态刷新界面的时候,例如动态刷新JLabel的文本,JTextField里的文本等等。但是往往却没有达到我们预期的效果,我相信很多朋友都遇到过本文将要说的这个问题。如下图的Swing界面,我们期望在点击按钮时,Jlabel和JTextField里的文本能不断的变化,并实时地显示出来。这个例子,我们期望点击按钮后,JLabel和JTextField每... java 提供了一个很好的表格控件JTable,我们可以很方便的将数据填充并显示出来,下面为JAVA代码的具体实现://定义一JTableJTable tbl_params = new JTable();//定义表格的行数据信息容器Vector srcdata=new Vector();//初始化表格的列标题及相关的数据信息容器String[] columnName={"参数名称","参数的... JAVAJTable刷新的小问题如何解决?在JTextField 里输入一个数,点"添加行"后,JTable表里就会生成出相对应的行!现在有个问题.就是不能刷新,如果在点"添加行",表里就会又生成对应的行来,我想要的效果是:比如输入要2行,点按钮生成2行,在输入5行,就生成5行,把原来的2行删除!import java.awt.Dimension;import java.awt.Rectang... 一直用web写程序,最近有同学交我帮忙写个java软件,写前端时用了swing,发现swing里面的小细节非常多,比如列表,表格的动态更新什么的,细节很重要,一个不小心整个界面都崩溃,显示不出来。由于我写的软件需要定时刷新界面,所以需要对JTable进行实时更新,对于动态更新其实最简单的,就是用 Vector 做 table 的模型,只要改变 Vector 的数据,updateUI,表格就刷新了... 假设我的表格有4列 jTable.getColumnModel().getColumn(0).setPreferredWidth(80); jTable.getColumnModel().getColumn(1).setPreferredWidth(80); jTable.getColumnModel().getColumn(2).setPreferredWidth(120); jTable.getColumnModel().getColumn(3).setPreferredWid 若要根据内容来调整列宽,那首先要知道内容占用多少宽度,代码如下 int maxwidth = 0; for (int row=0; row<table.getRowCount(); row++) { TableCellRenderer rend = table. 1. TableCellRender 无法设置背景颜色 2. TableCellRender 和 CellEditor 比较优雅的使用方式 (个人认为) 3. TableCellRender + TableCellEditor 所选Cell内容不更新 本文典型应用于,当数据发生改变时,重新加载JTable数据,并且刷新, 令使用者可以立刻看到改变的结果。 使用JTable展示数据时,本部分对数据的增、删、改、查所引起的数据列 表的改变,可以进行实时刷新展示。而不论改变动作来自于