JPanel заявляет для Synth

В моем приложении есть несколько пользовательских кнопок, которые имеют собственные макеты текста / значков и некоторые дополнительные элементы, которые обычно не связаны с кнопками. Например, у некоторых есть две текстовые метки вместо одной.

Я реализовал свои пользовательские кнопки следующим образом:

class CustomButton extends JPanel implements MouseListener {
    CustomButton() {
        setName("CustomButton");
    }
}

Я использую Synth для L&F, и я хотел бы, чтобы как можно больше информации о стиле (в первую очередь настройки цвета) было определено в файле XML).

В файле XML у меня есть это:

<style id="customButtonStyle">
    <state>
        <color idref="A" type="BACKGROUND" />
    </state>
    <state value="MOUSE_OVER">
        <color idref="B" type="BACKGROUND" />
    </state>
    <state value="PRESSED">
        <color idref="C" type="BACKGROUND" />
    </state>
</style>
<bind sytle="customButtonStyle" type="name" key="CustomButton" />

Когда я запускаю приложение, цвет "A" используется правильно, но цвета "B" и "C" никогда не устанавливаются.

У меня вопрос, как я могу уведомить Synth о состоянии моей пользовательской кнопки?

В сторону: я смотрел на наличие CustomButton простираться JButton но я не мог найти хороший способ сделать кнопку с пользовательскими субкомпонентами. Я мог бы опубликовать это как отдельный вопрос, если этот подход не сработает.

1 ответ

Может быть, не ответ на ваш вопрос, я считаю, что более удобным является использование ButtonModel, как MouseListener и MouseMotionListener, пример для моей идеи здесь,

Другие вопросы по тегам