En fait, je ne vais pas vous asser tout mon code, ce serait fastidieux (il est relativement conséquent tout de même).
Par contre si vous me dites quelle composante peut bien créer ce problème, je pourrais vous donenr le code correspondant.
J'ajouterais juste que le problème ne se pose pas sur un déplacement vertical de ma fenêtre...
Pour être un peu plus complet tout de même, voici les fichiers que j'utilise:
MGTable.java
MGTableModel.java
MGRowHeader.java
MGRowHeaderUI.java
MGRowHeaderRenderer.java
MGColoredTableCellRenderer.java
Le fichier qui attire ma curiosités est:
MGRowHeaderUI.java où je redéfinit paint().
la voici :
public
void
paint(Graphics g, JComponent c)
{
Rectangle clipBounds = g.getClipBounds();
if
(header.getColumnModel() == null
)
return
;
int
column = 0;
boolean
drawn = false
;
int
draggedColumnIndex = -1;
Rectangle draggedCellRect = null
;
Dimension size = header.getSize();
Rectangle cellRect = new
Rectangle(0, 0, size.width, size.height);
Enumeration enumeration = header.getColumnModel().getColumns();
while
(enumeration.hasMoreElements())
{
TableColumn aColumn = (TableColumn)enumeration.nextElement();
int
columnMargin = header.getColumnModel().getColumnMargin();
cellRect.height = aColumn.getWidth() + columnMargin;
// Note: The header cellRect includes columnMargin so the
// drawing of header cells will not have any gaps.
if
(cellRect.intersects(clipBounds))
{
drawn = true
;
if
(aColumn != header.getDraggedColumn())
{
paintCell(g, cellRect, column);
}
else
{
// Draw a gray well in place of the moving column
g.setColor(header.getParent().getBackground());
g.fillRect(cellRect.x, cellRect.y,
cellRect.width, cellRect.height);
draggedCellRect = new
Rectangle(cellRect);
draggedColumnIndex = column;
}
}
else
{
if
(drawn)
// Don't need to iterate through the rest
break
;
}
cellRect.y += cellRect.height;
column++;
}
// draw the dragged cell if we are dragging
TableColumn draggedColumnObject = header.getDraggedColumn();
if
(draggedColumnObject != null
&& draggedCellRect != null
)
{
draggedCellRect.x += header.getDraggedDistance();
paintCell(g, draggedCellRect, draggedColumnIndex);
}
}
private
void
paintCell(Graphics g, Rectangle cellRect, int
columnIndex)
{
TableColumn aColumn = header.getColumnModel().getColumn(columnIndex);
TableCellRenderer renderer = aColumn.getHeaderRenderer();
if
( renderer == null
)
{
aColumn.setHeaderRenderer(new
MGRowHeaderRenderer());
renderer = aColumn.getHeaderRenderer();
}
Component component = renderer.getTableCellRendererComponent(
header.getTable(), aColumn.getHeaderValue(),
false
, false
, -1, columnIndex);
rendererPane.add(component);
rendererPane.paintComponent(g, component, header, cellRect.x, cellRect.y,
cellRect.width, cellRect.height, true
);
}
Mais comme j'ai dit précedemment, je ne sais pas si c'est ici que se trouve le problème...
Merci de m'aider.