public void setCurPage(int curPage)
{
// jComboBox1.setSelectedIndex(curPage);
Vector tempTitle,tempResult;
if(viewFlag == true)
tempTitle = title1;
else
tempTitle = title2;
Vector eachResult = new Vector();
// tempResult = (Vector)result.clone();
int firstRecord = curPage*10;
int lastRecord = firstRecord + 9;
if(lastRecord >= recordNum)
lastRecord = recordNum - 1;
int i;
for(i = firstRecord; i <= lastRecord; i++)
// eachResult.add(tempResult.get(i));
eachResult.add(result.get(i)); //result是vector类型,里面放的也
modal.setDataVector(eachResult,tempTitle); //是vector,再里面放的13个
} //String(原来)
在jtable中,我想当viewFlag为true的时候让它显示13列,为false的时候显示8列(通过menuitem实现)。我起初的想法是通过改变setDataVector中的参数tempTitle来实现,就是用标题的列数来控制整个jtable的列数,但是发现当13列变成8列时连result中的每一个小vector中的13列String也被截取成8列。jtable中有13个标题,但只有前八列有值,后5列没有值,请问高手们,在jtable中有什么方法动态的显示13列或8列。
在线等!!!
9 个解决方案
#1
自己顶!!!!!!!!!!!!!!!!!!!!!!!
#2
你想动态是怎么处理的。
通过设置列宽为0,并且不能Resize就可以简单实现啊
通过设置列宽为0,并且不能Resize就可以简单实现啊
#3
这种只是显示和隐藏而不改变数据模型本身的,不要修改model,就修改view吧。
设置列标题为空字符串,设置列宽为0(必须先设置最小宽度再设置最大宽度),刷新一下view就可以了。
不然就重新设置model吧。
设置列标题为空字符串,设置列宽为0(必须先设置最小宽度再设置最大宽度),刷新一下view就可以了。
不然就重新设置model吧。
#4
{
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel(); //在构造函数中
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
changeView(0); //调用changview把8-12列的列宽设为0
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
for(int i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
}
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem2将列宽设为75
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem1将列宽设为0
}
我的问题是:
1.一开始jtable1的列宽都没有设为0,构造函数的changView(0)根本不起作用
2.在按下menuitem1时,setPreferredWidth(width) setMaxWidth(width) setMinWidth(width)只有一些方法设置成功
menuitem1要两下jtable1的后五列的列宽才设为0.
我已经调试了一天了都没有解决,请问各路高手怎么解决???
在线等
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel(); //在构造函数中
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
changeView(0); //调用changview把8-12列的列宽设为0
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
for(int i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
}
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem2将列宽设为75
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem1将列宽设为0
}
我的问题是:
1.一开始jtable1的列宽都没有设为0,构造函数的changView(0)根本不起作用
2.在按下menuitem1时,setPreferredWidth(width) setMaxWidth(width) setMinWidth(width)只有一些方法设置成功
menuitem1要两下jtable1的后五列的列宽才设为0.
我已经调试了一天了都没有解决,请问各路高手怎么解决???
在线等
#5
你表格的属性怎么设置的,应该设置为 JTable.Auto_Resize_Off
不然的话,即使你设置为0,再展现的时候还是会调整的
不然的话,即使你设置为0,再展现的时候还是会调整的
#6
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
这个不是吗
这个不是吗
#7
1、table.
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
2、table.getColumnModel().getColumn(i). setMinWidth(0);
3、table.getColumnModel().getColumn(i). setResizable(false);
4、table.getColumnModel().getColumn(i). setPreferredWidth(0);
如上设置...
2、table.getColumnModel().getColumn(i). setMinWidth(0);
3、table.getColumnModel().getColumn(i). setResizable(false);
4、table.getColumnModel().getColumn(i). setPreferredWidth(0);
如上设置...
#8
to gongfuliang:
谢谢你的建议,我加了你的几句话再加上我的一些小聪明,终于把它给搞定了
{
tableModel = ((DefaultTableModel) jTable2.getModel());
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel();
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(i = 0; i < 13; i++)
columnModel.getColumn(i).setResizable(false);
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
int i, j;
for(j = 0; j < 2; j++) //因为menuitem1要按两次才能改变,所以我试一下让他循环两次
{ //竟然得喔,踩到*运了。
for(i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
// eachColumn.setResizable(false);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
}
}
}
谢谢你的建议,我加了你的几句话再加上我的一些小聪明,终于把它给搞定了
{
tableModel = ((DefaultTableModel) jTable2.getModel());
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel();
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(i = 0; i < 13; i++)
columnModel.getColumn(i).setResizable(false);
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
int i, j;
for(j = 0; j < 2; j++) //因为menuitem1要按两次才能改变,所以我试一下让他循环两次
{ //竟然得喔,踩到*运了。
for(i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
// eachColumn.setResizable(false);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
}
}
}
#9
...
#1
自己顶!!!!!!!!!!!!!!!!!!!!!!!
#2
你想动态是怎么处理的。
通过设置列宽为0,并且不能Resize就可以简单实现啊
通过设置列宽为0,并且不能Resize就可以简单实现啊
#3
这种只是显示和隐藏而不改变数据模型本身的,不要修改model,就修改view吧。
设置列标题为空字符串,设置列宽为0(必须先设置最小宽度再设置最大宽度),刷新一下view就可以了。
不然就重新设置model吧。
设置列标题为空字符串,设置列宽为0(必须先设置最小宽度再设置最大宽度),刷新一下view就可以了。
不然就重新设置model吧。
#4
{
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel(); //在构造函数中
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
changeView(0); //调用changview把8-12列的列宽设为0
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
for(int i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
}
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem2将列宽设为75
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem1将列宽设为0
}
我的问题是:
1.一开始jtable1的列宽都没有设为0,构造函数的changView(0)根本不起作用
2.在按下menuitem1时,setPreferredWidth(width) setMaxWidth(width) setMinWidth(width)只有一些方法设置成功
menuitem1要两下jtable1的后五列的列宽才设为0.
我已经调试了一天了都没有解决,请问各路高手怎么解决???
在线等
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel(); //在构造函数中
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
changeView(0); //调用changview把8-12列的列宽设为0
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
for(int i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
}
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem2将列宽设为75
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
changeView(75);//按下menuitem1将列宽设为0
}
我的问题是:
1.一开始jtable1的列宽都没有设为0,构造函数的changView(0)根本不起作用
2.在按下menuitem1时,setPreferredWidth(width) setMaxWidth(width) setMinWidth(width)只有一些方法设置成功
menuitem1要两下jtable1的后五列的列宽才设为0.
我已经调试了一天了都没有解决,请问各路高手怎么解决???
在线等
#5
你表格的属性怎么设置的,应该设置为 JTable.Auto_Resize_Off
不然的话,即使你设置为0,再展现的时候还是会调整的
不然的话,即使你设置为0,再展现的时候还是会调整的
#6
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
这个不是吗
这个不是吗
#7
1、table.
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
2、table.getColumnModel().getColumn(i). setMinWidth(0);
3、table.getColumnModel().getColumn(i). setResizable(false);
4、table.getColumnModel().getColumn(i). setPreferredWidth(0);
如上设置...
2、table.getColumnModel().getColumn(i). setMinWidth(0);
3、table.getColumnModel().getColumn(i). setResizable(false);
4、table.getColumnModel().getColumn(i). setPreferredWidth(0);
如上设置...
#8
to gongfuliang:
谢谢你的建议,我加了你的几句话再加上我的一些小聪明,终于把它给搞定了
{
tableModel = ((DefaultTableModel) jTable2.getModel());
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel();
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(i = 0; i < 13; i++)
columnModel.getColumn(i).setResizable(false);
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
int i, j;
for(j = 0; j < 2; j++) //因为menuitem1要按两次才能改变,所以我试一下让他循环两次
{ //竟然得喔,踩到*运了。
for(i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
// eachColumn.setResizable(false);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
}
}
}
谢谢你的建议,我加了你的几句话再加上我的一些小聪明,终于把它给搞定了
{
tableModel = ((DefaultTableModel) jTable2.getModel());
columnModel = (DefaultTableColumnModel)jTable2.getColumnModel();
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(i = 0; i < 13; i++)
columnModel.getColumn(i).setResizable(false);
}
public void changeView(int width)
{
TableColumn eachColumn = null;
System.out.println(width);
int i, j;
for(j = 0; j < 2; j++) //因为menuitem1要按两次才能改变,所以我试一下让他循环两次
{ //竟然得喔,踩到*运了。
for(i = 8; i < 13; i++)
{
eachColumn = columnModel.getColumn(i);
eachColumn.setMinWidth(width);
System.out.println("Min"+eachColumn.getMinWidth());
// eachColumn.setResizable(false);
eachColumn.setPreferredWidth(width);
System.out.println("Prefer"+eachColumn.getPreferredWidth());
eachColumn.setMaxWidth(width);
System.out.println("Max"+eachColumn.getMaxWidth());
}
}
}
#9
...