这个是我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代码的具体实现://定义一JTable 类JTable tbl_params = new JTable();//定义表格的行数据信息容器Vector srcdata=new Vector();//初始化表格的列标题及相关的数据信息容器String[] columnName={"参数名称","参数的...
JAVA中JTable表刷新的小问题如何解决?在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展示数据时,本部分对数据的增、删、改、查所引起的数据列
表的改变,可以进行实时刷新展示。而不论改变动作来自于