Вы не можете создать подкласс Button, поэтому вам нужно сделать это во время включения / выключения кнопки.Я не смог найти SWT -> идентификатор сопоставления событий Windows, чтобы вызвать кнопку addListener
, чтобы сделать ее более общей.
public static void main(String[] args) throws Exception
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, true));
final Image image1 = new Image(null, new FileInputStream(
"C:\\tmp\\enabled.png"));
final Image image2 = new Image(null, new FileInputStream(
"C:\\tmp\\disabled.png"));
final Button button= new Button(shell, SWT.NONE);
button.setText("Hello World SWT");
button.setImage(image1);
button.pack();
final Button cb = new Button(shell, SWT.CHECK);
cb.setText("Check me");
cb.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent event)
{
button.setEnabled(!cb.getSelection());
if (button.isEnabled())
button.setImage(image1);
else
button.setImage(image2);
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}