Я хочу создать два или более JButton
с общим состоянием, т. Е. Когда кнопка мыши нажата либо на JButton
, оба отображаются как нажатые (или «поставлены на охрану»), или если они являются флажками, оба проверяются / не проверяются одновременно и т. д.
Для пользователя это должно выглядеть так, как если бы обе кнопки были одинаковой , появляясь в более чем одном месте в иерархии (в действительности Swing не позволяет этого).
Я могу пойти наполовину, создав одну ButtonModel
и назначив одну и ту же модель обеим кнопкам. Это синхронизирует их охрану / проверенные / выбранные состояния и т. Д.
Однако, один заметный эффект, который не используется совместно для кнопок таким образом, - это фокус - нажатие на одну кнопку дает этой кнопке фокус (обозначенный прямоугольником внутри кнопки) и удаляет его с другой кнопки. , Я хотел бы отобразить обе кнопки так, как будто они были сфокусированы, когда любая кнопка действительно имеет фокус.
Есть ли чистый способ сделать это?
В идеале я бы хотел, чтобы он был независим от выбранного внешнего вида.
Редактировать: Я обнаружил еще одну проблему с разделением ButtonModel
. Когда одна из кнопок теряет фокус, она устанавливает свойства armed
и pressed
модели на false
. Это происходит после обработки mousePressed
, поэтому, если вы нажмете вторую кнопку, когда первая кнопка имеет фокус, она не перейдет в нажатое состояние, пока вы не нажмете ее второй раз.