Подтвердить что ты не робот

Как создать пользовательский компонент Swing

Я всегда хотел создавать пользовательские компоненты на Java или настраивать существующие, но мои поиски никогда не приводили к чему-либо полезному. Поэтому я решил спросить сообщество StackOverflow:

Где я могу найти информацию о настройке компонентов Java GUI в целом?

И когда я имею в виду настройку, я не говорю об изменении цветов, шрифтов и т.д. Я имею в виду действительно их настройку. Вот два примера компонентов макета:

Custom Components Mockup

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

В случае, если вам интересно, как работают два компонента в макете, вот он:

Индивидуальная JScrollPane, которая имеет две полосы прокрутки для каждой ориентации. Каждая полоса прокрутки может действовать по-разному. Например, внешние прокручиваются нормально, а внутренние перемещают представление более чем в Picasa-like. Я действительно получил рабочий (!) Ответ от групп google здесь, но это был всего лишь код.

Второй - это настраиваемый JComboBox, который, когда всплывающий список расширяется, имеет JComponent в конце. Это может быть что угодно, от простой JLabel с иконкой до JButton, который каким-то образом манипулирует списком.

Но этот вопрос не касается этих конкретных компонентов. Это о поиске ресурсов (веб-сайты, книги, статьи и т.д.), Чтобы узнать, как их создавать.

4b9b3361

Ответ 2

JDK является открытым исходным кодом. Чтобы понять, как вы пишете компонент Swing, нет лучшего места для поиска, чем источник для компонентов Swing. В общем, при создании пользовательских компонентов вас интересует одно или несколько из следующего: {семантика взаимодействия, визуальное представление, структура композиции}

Начните с простейших случаев:

Пассивные компоненты: JLabel
Интерактивные компоненты: JButton

JLabel будет демонстрировать расширение barebones JComponent для пользовательского рисования компонента; в этом случае он рисует строковое значение "text" в качестве своего представления.

JButton будет демонстрировать расширение barebones для взаимодействия с пользователем в дополнение к рисованию компонента.

Ответ 3

Filthy Rich Клиенты - отличная, очень читаемая книга по этой теме. Это больше связано с улучшением внешнего вида компонентов Swing, чем с созданием совершенно новых, но оно попадает в кишки Swing и предоставляет множество практических примеров.

Ответ 4

Это довольно открытый вопрос, короткий простой ответ заключается в том, что вы подклассы JComponent или один из его потомков и добавляете функциональность что вам нужно. Очевидно, что в зависимости от того, что вы хотите сделать, это может быть различным. Во-первых, я рекомендую вам прочитать инструкцию по использованию < с использованием компонентов Swing, где есть примеры того, как использовать scroll panes и всплывающие меню. После того, как вы прочитаете эти и экспериментировали, у вас могут возникнуть более конкретные вопросы, которые будут проще для людей, чтобы предоставить ответы на них.

Если два компонента в вашем макете - это все, что вы хотите реализовать, то предоставление нам лучшего представления о том, как вы хотите, чтобы они работали, даст лучшие ответы.

Ответ 6

Лично я считаю, что вышеупомянутые ответы слишком общие или неопределенные. Кроме того, поскольку кто-то неизбежно собирается столкнуться с этим потоком так же, как и я, я мог бы также предоставить то, что нашел:

Надеюсь, что это поможет...