Skip to content

Commit eddf76b

Browse files
committed
Synchronization of left and right side properties.
1 parent 955ac54 commit eddf76b

File tree

2 files changed

+44
-24
lines changed

2 files changed

+44
-24
lines changed

github/tutorials/fixed-columns.png

7.46 KB
Loading

src/org/quinto/swing/table/view/JBroTable.java

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -580,34 +580,40 @@ public void valueChanged( ListSelectionEvent e ) {
580580
* with fixed columns. This scroll pane may have a null viewport if a model contains no visible
581581
* fixed columns.
582582
* <p>To obtain a left fixed table, call {@link #getSlaveTable}.</p>
583-
* @return a scroll pane with a fixed left part (if required)
583+
* @return a scroll pane with a fixed left part (if required), or null if this table is just a fixed part
584584
*/
585585
public JScrollPane getScrollPane() {
586-
if ( scrollPane != null )
586+
if ( scrollPane != null || getMasterTable() != null )
587587
return scrollPane;
588588
scrollPane = new JScrollPane( this );
589-
if ( getMasterTable() == null ) {
590-
updateScrollPane();
591-
addPropertyChangeListener( new PropertyChangeListener() {
592-
@Override
593-
public void propertyChange( PropertyChangeEvent e ) {
594-
JViewport viewport = scrollPane.getRowHeader();
595-
if ( viewport == null )
596-
return;
597-
Component comp = viewport.getView();
598-
if ( !( comp instanceof JBroTable ) )
599-
return;
600-
JBroTable fixed = ( JBroTable )comp;
601-
String property = e.getPropertyName();
602-
if ( "selectionModel".equals( property ) )
603-
fixed.setSelectionModel( getSelectionModel() );
604-
else if ( "rowSorter".equals( property ) )
605-
fixed.setRowSorter( getRowSorter() );
606-
else if ( "model".equals( property ) )
607-
fixed.setModel( getModel() );
608-
}
609-
} );
610-
}
589+
updateScrollPane();
590+
addPropertyChangeListener( new PropertyChangeListener() {
591+
@Override
592+
public void propertyChange( PropertyChangeEvent e ) {
593+
JViewport viewport = scrollPane.getRowHeader();
594+
if ( viewport == null )
595+
return;
596+
Component comp = viewport.getView();
597+
if ( !( comp instanceof JBroTable ) )
598+
return;
599+
JBroTable fixed = ( JBroTable )comp;
600+
String property = e.getPropertyName();
601+
if ( "selectionModel".equals( property ) )
602+
fixed.setSelectionModel( getSelectionModel() );
603+
else if ( "rowSorter".equals( property ) )
604+
fixed.setRowSorter( getRowSorter() );
605+
else if ( "model".equals( property ) )
606+
fixed.setModel( getModel() );
607+
else if ( "showVerticalLines".equals( property ) )
608+
fixed.setShowVerticalLines( getShowVerticalLines() );
609+
else if ( "rowMargin".equals( property ) )
610+
fixed.setRowMargin( getRowMargin() );
611+
else if ( "rowHeight".equals( property ) )
612+
fixed.setRowHeight( getRowHeight() );
613+
else if ( "fillsViewportHeight".equals( property ) )
614+
fixed.setFillsViewportHeight( getFillsViewportHeight() );
615+
}
616+
} );
611617
return scrollPane;
612618
}
613619

@@ -640,6 +646,8 @@ public JBroTable getMasterTable() {
640646
* @return fixed part for a main table, otherwise null
641647
*/
642648
public JBroTable getSlaveTable() {
649+
if ( getScrollPane() == null )
650+
return null;
643651
JViewport viewport = getScrollPane().getRowHeader();
644652
if ( viewport == null )
645653
return null;
@@ -653,6 +661,14 @@ public JBroTable getSlaveTable() {
653661
public boolean hasFocus() {
654662
return masterTable == null ? super.hasFocus() : masterTable.hasFocus();
655663
}
664+
665+
@Override
666+
public void setRowHeight( int row, int rowHeight ) {
667+
super.setRowHeight( row, rowHeight );
668+
JBroTable fixed = getSlaveTable();
669+
if ( fixed != null )
670+
fixed.setRowHeight( row, rowHeight );
671+
}
656672

657673
private void updateScrollPane() {
658674
if ( scrollPane == null || getMasterTable() != null )
@@ -683,6 +699,10 @@ private void updateScrollPane() {
683699
fixed.setAutoResizeMode( getAutoResizeMode() );
684700
fixed.setFocusable( false );
685701
fixed.setUpdateSelectionOnSort( false );
702+
fixed.setFillsViewportHeight( getFillsViewportHeight() );
703+
fixed.setRowHeight( getRowHeight() );
704+
fixed.setRowMargin( getRowMargin() );
705+
fixed.setShowVerticalLines( getShowVerticalLines() );
686706
fixed.setPreferredScrollableViewportSize( fixed.getPreferredSize() );
687707

688708
MouseAdapter ma = new MouseAdapter() {

0 commit comments

Comments
 (0)