-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
1.2.1
-
generic
-
generic
Name: mc57594 Date: 08/12/99
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
I run under NT4/SP4, JDK1.2.1.
I create a JTable, the I add columns. When I add a column, I
initialize its identifier and Size (and min/max/pref. size).
The pb is that when I add the third column (for instance), using
"table.getModel().addColumn(name)" - model is DefaultTableModel -,
that re-initialize the different size of all the previous columns
to their initial size (75).
If I do directly "table.addColumn(new TableColumn(int));", the pb
does not appear.
The following code show that, at display, all the columns have
a size of 75, except the last one.
******************** code **************
import java.awt.*;
import javax.swing.*;
public class JDialog3 extends javax.swing.JDialog
{
public JDialog3(Frame parent)
{
getContentPane().setLayout(null);
setSize(405,205);
setVisible(false);
JScrollPane1.setOpaque(true);
getContentPane().add(JScrollPane1);
JScrollPane1.setBounds(13,11,360,160);
JScrollPane1.getViewport().add(JTable1);
JTable1.setBounds(0,0,357,0);
JTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // <<<<<<<<<<<
JTable1.setShowVerticalLines(true);
JTable1.setShowHorizontalLines(false);
String[] headerStr = {"Col1","Col2","Col3","Col4"};
int[] columnWidth = {12,200,100,36};
JTable1.setModel( new javax.swing.table.DefaultTableModel() {
public Class getColumnClass(int col) {
switch (col) {
case 0: return String.class;
case 1: return String.class;
case 2: return Integer.class;
case 3: return Boolean.class;
default: return Object.class;
}
}
public boolean isCellEditable(int row, int col) {
return false;
}
}
);
// create column each after the other : name + *** width **
for (int i = 0; i<4;i++)
{
createCol( headerStr[i], columnWidth[i]);
}
SymWindow aSymWindow = new SymWindow();
this.addWindowListener(aSymWindow);
}
public void createCol( String hdr, int wid) {
int idx = JTable1.getColumnCount();
// COMMENT FOLLOWING for OK
// add column : BUG
((javax.swing.table.DefaultTableModel)(JTable1.getModel())).addColumn( hdr );
// UNCOMMENT FOLLOWING for OK
// add column : OK
//JTable1.addColumn( new javax.swing.table.TableColumn(idx) );
javax.swing.table.TableColumn col = JTable1.getColumnModel().getColumn(idx);
// UNCOMMENT FOLLOWING for OK, and same feature
//col.setIdentifier(hdr);
// all the stuff because of bug #4189262
col.setMinWidth( wid );
col.setMaxWidth( wid );
col.setPreferredWidth( wid ); // really usefull
col.setMinWidth(12);
col.setMaxWidth(1000);
}
public JDialog3()
{
this((Frame)null);
}
public JDialog3(String sTitle)
{
this();
setTitle(sTitle);
}
static public void main(String args[])
{
(new JDialog3()).setVisible(true);
}
javax.swing.JScrollPane JScrollPane1 = new javax.swing.JScrollPane();
javax.swing.JTable JTable1 = new javax.swing.JTable();
class SymWindow extends java.awt.event.WindowAdapter
{
public void windowClosing(java.awt.event.WindowEvent event)
{
Object object = event.getSource();
if (object == JDialog3.this)
JDialog3_windowClosing(event);
}
}
void JDialog3_windowClosing(java.awt.event.WindowEvent event)
{
setVisible(false);
System.exit(0);
}
}
***************** end of code *******************
I may miss something, but I guess it must be a bug. I could'nt
find something like this in the existing bugs.
Keep enjoy Java!
Francois.
(Review ID: 93588)
======================================================================