У меня есть Java-приложение, использующее SWT в качестве инструментария, и я устал от всего уродливого кода, который требуется для обновления элемента GUI.
Просто чтобы активировать отключенную кнопку, мне нужно пройти примерно так:
shell.getDisplay().asyncExec(new Runnable() {
public void run() {
buttonOk.setEnabled(true);
}
});
Я предпочитаю сохранять исходный код настолько ровным, насколько это возможно, но мне нужны колоссальные 3 уровня отступа, чтобы сделать что-то простое.
Есть ли способ, которым я могу обернуть это? Я хотел бы класс, как:
public class UIUpdater {
public static void updateUI(Shell shell, *function_ptr*) {
shell.getDisplay().asyncExec(new Runnable() {
public void run() {
//Execute function_ptr
}
});
}
}
И может использоваться так:
UIUpdater.updateUI(shell, buttonOk.setEnabled(true));
Что-то вроде этого было бы замечательно, если бы скрыл этот ужасный беспорядок, который, похоже, SWT считает необходимым сделать что-либо.
Насколько я понимаю, Java не может выполнять указатели на функции. Но в Java 7 будет нечто, называемое Closures, которое должно быть тем, что я хочу. Но в то же время есть ли что-нибудь, что я могу сделать, чтобы передать указатель на функцию или обратный вызов другой функции, которая должна быть выполнена?
Кроме того, я начинаю думать, что стоило бы приложить усилия, чтобы переделать это приложение в Swing, и мне не нужно мириться с этим уродливым дерьмом и непросплатформенностью SWT. 1018 *