JTable 设置表头,列宽后,鼠标调整表头会导致表头显示异常

小带鱼 2018-08-24 10:32:18
做了个表格,JTable,用了以下三句核心代码

this.table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.table.getTableHeader().setPreferredSize(new Dimension(this.table.getTableHeader().getPreferredSize().width,50));
this.table.setRowHeight(40);


发现,当把某一列的边拉拽到窗口外,再滚动滚动条到表格右侧,会发现表格内部表头显示异常。
正常情况如下:


把H列和I列之间的边,用鼠标拉到右边窗口外面去:

然后把滚动条滚到最后面后,发现表头显示异常了



完整代码如下:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class TableInsertTest extends JFrame {
private JTable table = new JTable();

public TableInsertTest() {
TableModel dataModel = new DefaultTableModel() {
public int getColumnCount() { return 15; }
public int getRowCount() {return 10;}
public Object getValueAt(int row, int column) {return row * column;}
};
this.table = new JTable(dataModel);
this.table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.table.getTableHeader().setPreferredSize(new Dimension(this.table.getTableHeader().getPreferredSize().width,50));
this.table.setRowHeight(40);
this.table.setFont(new Font("宋体",0,16));
this.table.updateUI();
JScrollPane scrollpane = new JScrollPane(this.table);
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(scrollpane, BorderLayout.CENTER);
}

public static void main(String[] args) {
TableInsertTest frame = new TableInsertTest();
frame.setVisible(true);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}




...全文
369 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧