public override void initialize(Table table, Skin skin, float leftCellWidth) { var value = getValue <Color>(); var label = createNameLabel(table, skin, leftCellWidth); var labelR = new Label("r", skin); _textFieldR = new TextField(value.R.ToString(), skin); _textFieldR.setMaxLength(3); _textFieldR.setTextFieldFilter(new DigitsOnlyFilter()).setPreferredWidth(28); _textFieldR.onTextChanged += (field, str) => { int newR; if (int.TryParse(str, out newR)) { var newValue = getValue <Color>(); newValue.R = (byte)newR; setValue(newValue); } }; var labelG = new Label("g", skin); _textFieldG = new TextField(value.G.ToString(), skin); _textFieldG.setMaxLength(3); _textFieldG.setTextFieldFilter(new DigitsOnlyFilter()).setPreferredWidth(28); _textFieldG.onTextChanged += (field, str) => { int newG; if (int.TryParse(str, out newG)) { var newValue = getValue <Color>(); newValue.G = (byte)newG; setValue(newValue); } }; var labelB = new Label("b", skin); _textFieldB = new TextField(value.B.ToString(), skin); _textFieldB.setMaxLength(3); _textFieldB.setTextFieldFilter(new DigitsOnlyFilter()).setPreferredWidth(28); _textFieldB.onTextChanged += (field, str) => { int newB; if (int.TryParse(str, out newB)) { var newValue = getValue <Color>(); newValue.B = (byte)newB; setValue(newValue); } }; var labelA = new Label("a", skin); _textFieldA = new TextField(value.A.ToString(), skin); _textFieldA.setMaxLength(3); _textFieldA.setTextFieldFilter(new DigitsOnlyFilter()).setPreferredWidth(28); _textFieldA.onTextChanged += (field, str) => { int newA; if (int.TryParse(str, out newA)) { var newValue = getValue <Color>(); newValue.A = (byte)newA; setValue(newValue); } }; var hBox = new HorizontalGroup(2); hBox.addElement(labelR); hBox.addElement(_textFieldR); hBox.addElement(labelG); hBox.addElement(_textFieldG); hBox.addElement(labelB); hBox.addElement(_textFieldB); hBox.addElement(labelA); hBox.addElement(_textFieldA); table.add(label); table.add(hBox); }