diff --git a/CHANGELOG.md b/CHANGELOG.md index d7a408f3..99aaf85d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ FlatLaf Change Log #### Fixed bugs +- TableHeader: Fixed position of column separators in right-to-left component + orientation. - SwingX: Fixed striping background highlighting color (e.g. alternating table rows) in dark themes. diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java index c311da68..a3ca46a7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java @@ -98,10 +98,13 @@ public class FlatTableHeaderUI @Override public void paint( Graphics g, JComponent c ) { + if( header.getColumnModel().getColumnCount() <= 0 ) + return; + // do not paint borders if JTableHeader.setDefaultRenderer() was used TableCellRenderer defaultRenderer = header.getDefaultRenderer(); boolean paintBorders = isSystemDefaultRenderer( defaultRenderer ); - if( !paintBorders && header.getColumnModel().getColumnCount() > 0 ) { + if( !paintBorders ) { // check whether the renderer delegates to the system default renderer Component rendererComponent = defaultRenderer.getTableCellRendererComponent( header.getTable(), "", false, false, -1, 0 ); @@ -168,7 +171,8 @@ public class FlatTableHeaderUI g2.fill( new Rectangle2D.Float( x - lineWidth, topLineIndent, lineWidth, height - bottomLineIndent ) ); } } else { - int x = width; + Rectangle cellRect = header.getHeaderRect( 0 ); + int x = cellRect.x + cellRect.width; for( int i = 0; i < sepCount; i++ ) { x -= columnModel.getColumn( i ).getWidth(); g2.fill( new Rectangle2D.Float( x - (i < sepCount - 1 ? lineWidth : 0),