table.setRowHeight(30);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane = new JScrollPane(table);
当数据的列比较多时,出现在横向滚动条,滚动滚动条时表头不刷新.也就是数据内容和表头不一致了,表头画的重叠了.
大侠们帮帮我
18 个解决方案
#1
#2
是不是要把tableHeader设置一下,
你看看swingHacker 中有没有介绍
你看看swingHacker 中有没有介绍
#3
完整代码发上来
………………………………
#4
代码很多呀.就是当table很大时,jscrollpane就会出现横向滚动条.移动横向滚动条,表头就有问题呀
#5
不会是行数越界了吧~~~~~~~~~~~
#6
这可能需要你编写一个方法来根据内容的列宽动态调整表头列宽了。
#7
没有越界了.只是表格大了,JScrollPane就自动出现横向滚动条了
#8
我table加了绘制器后就会出现问题.估计是滚动条滚动的时候没有刷新表头的绘制器
table.getTableHeader().setDefaultRenderer(allrender);
table.getTableHeader().setDefaultRenderer(allrender);
#9
问题找到了.
//设置table表头的高度 //加上下面这一句的话当JScrollPane出现滚动条时,滚动滚动条表头会出现不刷新的情况
// table.getTableHeader().setPreferredSize(new Dimension(0,40));
//设置table表头的高度 //加上下面这一句的话当JScrollPane出现滚动条时,滚动滚动条表头会出现不刷新的情况
// table.getTableHeader().setPreferredSize(new Dimension(0,40));
#10
#11
#12
楼上就别打广告了 烦人 很多帖子里都有你 --abc89757 奥运
#13
你的附件不对啊,重新发一个
#14
问题是找到了,可是不知道解决,怎么样设置表头的高就不会出现这种现象了.
#15
因为你设置的宽度不对
应该这样:
table.getTableHeader().setPreferredSize(new Dimension(table.getTableHeader().getPreferredSize().width,40));
就可以了
参考代码:
应该这样:
table.getTableHeader().setPreferredSize(new Dimension(table.getTableHeader().getPreferredSize().width,40));
就可以了
参考代码:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
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 10000;
}
public int getRowCount() {
return 10;
}
@Override
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, 30));
this.table.updateUI();
JScrollPane scrollpane = new JScrollPane(this.table);
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(scrollpane, BorderLayout.CENTER);
}
/**
* @param args
*/
public static void main(String[] args) {
TableInsertTest frame = new TableInsertTest();
frame.setVisible(true);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
#16
楼上的一语道破,解了我几天想不通的问题.结贴了.
#17
??????????????????
#18
我也遇上了楼主的问题,解决方法灰常简单:
dataTable.getTableHeader().setPreferredSize(new Dimension(10000,headHeight));
把表头的宽度设为一个很大的数就可以了。我用了15楼的方法还是不管用,用我的方法是好的。
dataTable.getTableHeader().setPreferredSize(new Dimension(10000,headHeight));
把表头的宽度设为一个很大的数就可以了。我用了15楼的方法还是不管用,用我的方法是好的。
#1
#2
是不是要把tableHeader设置一下,
你看看swingHacker 中有没有介绍
你看看swingHacker 中有没有介绍
#3
完整代码发上来
………………………………
#4
代码很多呀.就是当table很大时,jscrollpane就会出现横向滚动条.移动横向滚动条,表头就有问题呀
#5
不会是行数越界了吧~~~~~~~~~~~
#6
这可能需要你编写一个方法来根据内容的列宽动态调整表头列宽了。
#7
没有越界了.只是表格大了,JScrollPane就自动出现横向滚动条了
#8
我table加了绘制器后就会出现问题.估计是滚动条滚动的时候没有刷新表头的绘制器
table.getTableHeader().setDefaultRenderer(allrender);
table.getTableHeader().setDefaultRenderer(allrender);
#9
问题找到了.
//设置table表头的高度 //加上下面这一句的话当JScrollPane出现滚动条时,滚动滚动条表头会出现不刷新的情况
// table.getTableHeader().setPreferredSize(new Dimension(0,40));
//设置table表头的高度 //加上下面这一句的话当JScrollPane出现滚动条时,滚动滚动条表头会出现不刷新的情况
// table.getTableHeader().setPreferredSize(new Dimension(0,40));
#10
#11
#12
楼上就别打广告了 烦人 很多帖子里都有你 --abc89757 奥运
#13
你的附件不对啊,重新发一个
#14
问题是找到了,可是不知道解决,怎么样设置表头的高就不会出现这种现象了.
#15
因为你设置的宽度不对
应该这样:
table.getTableHeader().setPreferredSize(new Dimension(table.getTableHeader().getPreferredSize().width,40));
就可以了
参考代码:
应该这样:
table.getTableHeader().setPreferredSize(new Dimension(table.getTableHeader().getPreferredSize().width,40));
就可以了
参考代码:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
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 10000;
}
public int getRowCount() {
return 10;
}
@Override
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, 30));
this.table.updateUI();
JScrollPane scrollpane = new JScrollPane(this.table);
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(scrollpane, BorderLayout.CENTER);
}
/**
* @param args
*/
public static void main(String[] args) {
TableInsertTest frame = new TableInsertTest();
frame.setVisible(true);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
#16
楼上的一语道破,解了我几天想不通的问题.结贴了.
#17
??????????????????
#18
我也遇上了楼主的问题,解决方法灰常简单:
dataTable.getTableHeader().setPreferredSize(new Dimension(10000,headHeight));
把表头的宽度设为一个很大的数就可以了。我用了15楼的方法还是不管用,用我的方法是好的。
dataTable.getTableHeader().setPreferredSize(new Dimension(10000,headHeight));
把表头的宽度设为一个很大的数就可以了。我用了15楼的方法还是不管用,用我的方法是好的。