class sRenderer(DefaultTableCellRenderer): #--------------------------------------------------------------------------- # Name: __init__() # Role: Constructor #--------------------------------------------------------------------------- def __init__(self): DefaultTableCellRenderer.__init__(self) self.spinner = JSpinner(SpinnerListModel(choices)) #--------------------------------------------------------------------------- # Name: getTableCellRendererComponent() # Role: Return the component containing the rendered value # Note: Called frequently, don't create a new component each time #--------------------------------------------------------------------------- def getTableCellRendererComponent( self, table, # table containing cell being rendered value, # Object - value being rendered isSelected, # boolean - Is value selected? hasFocus, # boolean - Does this cell have focus? row, # int - Row # (0..N) col # int - Col # (0..N) ): self.spinner.setValue(value) return self.spinner
class sRenderer( DefaultTableCellRenderer ) : #--------------------------------------------------------------------------- # Name: __init__() # Role: Constructor #--------------------------------------------------------------------------- def __init__( self ) : self.DTCR = DefaultTableCellRenderer() self.spinner = JSpinner( SpinnerListModel( choices ) ) #--------------------------------------------------------------------------- # Name: getTableCellRendererComponent() # Role: Return the component containing the rendered value # Note: Called frequently, don't create a new component each time #--------------------------------------------------------------------------- def getTableCellRendererComponent( self, table, # table containing cell being rendered value, # Object - value being rendered isSelected, # boolean - Is value selected? hasFocus, # boolean - Does this cell have focus? row, # int - Row # (0..N) col # int - Col # (0..N) ) : comp = self.DTCR.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, col ) # print '[ %d, %d ] : %s on %s' % ( row, col, comp.getForeground(), comp.getBackground() ) tf = self.spinner.getEditor().getTextField() tf.setForeground( comp.getForeground() ) tf.setBackground( comp.getBackground() ) self.spinner.setValue( value ) return self.spinner
class editor(DefaultCellEditor): #--------------------------------------------------------------------------- # Name: __init__() # Role: Constructor - invoke the DefaultTableModel constructor #--------------------------------------------------------------------------- def __init__(self): DefaultCellEditor.__init__(self, JTextField()) self.spinner = JSpinner(SpinnerListModel(choices)) self.spinner.setEditor(JSpinner.ListEditor(self.spinner)) #--------------------------------------------------------------------------- # Name: getCellEditorValue() # Role: Returns the current spinner selection #--------------------------------------------------------------------------- def getCellEditorValue(self): return self.spinner.getValue() #--------------------------------------------------------------------------- # Name: getTableCellEditorComponent() # Role: Returns the component to be used to edit the cell values #--------------------------------------------------------------------------- def getTableCellEditorComponent( self, # object reference table, # JTable value, # Object isSelected, # boolean row, # int column # int ): self.spinner.setValue(value) return self.spinner
def testJSpinner(self): valueDummy = DummyObject() nextValueDummy = DummyObject() prevValueDummy = DummyObject() spinnerModel = SpinnerNumberModel(3, 0, 5, 1) spinner = JSpinner(spinnerModel) self.group.bind(spinner, 'value', valueDummy, 'value') self.group.bind(spinner, 'nextValue', nextValueDummy, 'value') self.group.bind(spinner, 'previousValue', prevValueDummy, 'value') assert valueDummy.value == 3 assert nextValueDummy.value == 4 assert prevValueDummy.value == 2 spinner.setValue(5) assert valueDummy.value == 5 assert nextValueDummy.value is None assert prevValueDummy.value == 4 spinner.setValue(0) assert valueDummy.value == 0 assert nextValueDummy.value == 1 assert prevValueDummy.value is None