NullPointerException
NullPointerException

Reputation: 37731

SWT Button: setSelection(true) not working if SWT.READ_ONLY

I have a matrix of SWT.TOGGLE buttons, which are representing some toggle activators on my application.

The idea is display them toggled (pressed) if they are stored as activated, but to be SWT.READ_ONLY because this screen has only display purposes and must be non interactive.

The problem is that if I add SWT.READ_ONLY to the button, then setSelection(true) is not working and all the buttons where I'm calling setSelection(true) appear non toggled.

How can we deal with this?

Button button = new Button(column, SWT.TOGGLE | SWT.READ_ONLY);
button.setSelection(true);

Upvotes: 0

Views: 289

Answers (1)

greg-449
greg-449

Reputation: 111217

SWT.READ_ONLY is not a valid style for Button, you will get undefined behaviour by specifying it. You can only use the styles listed in the Javdoc for the individual control.

In the current implementation of SWT SWT.READ_ONLY has the same value as SWT.PUSH so you are effectively using SWT.TOGGLE | SWT.PUSH which is expressly forbidden. The implementation is probably choosing to implement SWT.PUSH which is why setSelection doesn't work.

The only way to stop events from a button is setEnabled(false) but this will gray out the value.

So you probably want to use some other way to display these settings.

Upvotes: 1

Related Questions