I have a 4 Tables with the same Columns Qty and Names. i would like to see if it is possible to bind the "Column Attributes Data" of a table to another table "Column Attributes Data" , so that they are Bind and the same , TABLE 1 to TABLE 2, TABLE 3 AND TABLE 4. meaning that if i adjust the width of a column on TABLE 1 . the other TABLES adjust the same .
so that the operator and designer does not need to adjust Table columns to make them match .
here is a screenshot of how I display the tables in window. any ideas?
I'm not sure how you could bind it because the attributes data property is not a bindable property on the table. Also, the attributes data propertyChange event won't occur outside of the designer. You could play around with developing a column model listener to synchronize the columns. Here's a quick example to get you started:
# Written for the table's propertyChange event handler
# Runs only once at initialization when the window is first opened
# Won't run in designer unless preview mode is on prior to the window being opened
if event.propertyName == 'componentRunning':
# Implement a custom table model listener class
from javax.swing.event import TableColumnModelListener
class ColumnModelListener(TableColumnModelListener):
def __init__(self):
pass
def columnSelectionChanged(self, event):
pass
# If adding, removing, and moving columns is allowed,
# ...develop the next three methods to synchronize that
def columnMoved(self, event):
pass
def columnAdded(self, event):
pass
def columnRemoved(self, event):
pass
# Synchronize the column widths here:
def columnMarginChanged(self, event):
# Get the current widths of the top table
widths = [column.width for column in event.source.columns]
# I had to add this to ensure the columns in my tables had an equal range of motion
# column.minWidth = 0
#Iterate through the other tables and syncronize the widths
for table in [tableTwo, tableThree, tableFour]:
self.setColumnWidths(table, widths)
# Create a custom method within the class for setting the widths of each table
# ...so there are not four copies of the same code for each table
def setColumnWidths(self, table, widths):
for index, column in enumerate(table.columnModel.columns):
column.minWidth = 0
column.preferredWidth = widths[index]
# Assign the table components to unambiguous variables for use by the listener
tableOne = event.source.parent.getComponent('Table 1').table
tableTwo = event.source.parent.getComponent('Table 2').table
tableThree = event.source.parent.getComponent('Table 3').table
tableFour = event.source.parent.getComponent('Table 4').table
# Create an instance of the listener and assign it to the table
listener = ColumnModelListener()
tableOne.columnModel.addColumnModelListener(listener)