写一个简单的程序如下,运行后,先改变列的宽度,然后按add钮给JTable添加一列,发现原来拉大的列宽都会变回初始的宽度。其实所有其他的列属性都会丢失掉,比如你给某列加了个renderer,添加列后,这个renderer也变成默认的了。
请问添加列时,如何保持原有的列属性不变呢?package test;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;public class TableTest extends JFrame implements ActionListener {
private JTable table;
private JButton button;
public TableTest() {
super( "Tabel Test" );
setSize( 600, 400 );
String[] cols = new String[] { "列1", "列2", "列3" };
String[][] data = new String[][]{ {"1", "2", "3"} };
table = new JTable( new DefaultTableModel( data, cols ) );
table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
Container pane = this.getContentPane();
pane.add( new JScrollPane( table ) );
button = new JButton( "add" );
button.addActionListener( this );
pane.add( button, BorderLayout.SOUTH );
this.show();
} public void actionPerformed( ActionEvent e ) {
TableModel model = table.getModel();
((DefaultTableModel) model).addColumn( "列4" );
}
public static void main( String[] args ) {
new TableTest();
}
}
请问添加列时,如何保持原有的列属性不变呢?package test;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;public class TableTest extends JFrame implements ActionListener {
private JTable table;
private JButton button;
public TableTest() {
super( "Tabel Test" );
setSize( 600, 400 );
String[] cols = new String[] { "列1", "列2", "列3" };
String[][] data = new String[][]{ {"1", "2", "3"} };
table = new JTable( new DefaultTableModel( data, cols ) );
table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
Container pane = this.getContentPane();
pane.add( new JScrollPane( table ) );
button = new JButton( "add" );
button.addActionListener( this );
pane.add( button, BorderLayout.SOUTH );
this.show();
} public void actionPerformed( ActionEvent e ) {
TableModel model = table.getModel();
((DefaultTableModel) model).addColumn( "列4" );
}
public static void main( String[] args ) {
new TableTest();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货