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

StackOverflow https://stackoverflow.com/questions/822899

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Custom Components Mockup

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

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

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

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

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

Это было полезно?

Решение

Эта статья, Как написать пользовательский компонент Swing это должно быть действительно полезно.Он охватывает репликацию ползункового элемента управления Windows, который имеет как дискретные шаги, так и непрерывный диапазон.

Другие советы

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

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

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

JLabel продемонстрирует расширение голых костей JComponent для пользовательского рисования компонента;в этом случае он рисует строковое значение 'text' в качестве своего представления.

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

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

Это довольно открытый вопрос, короткий простой ответ заключается в том, что вы относите подкласс JComponent или один из его потомков и добавьте необходимую вам функциональность.Очевидно, что в зависимости от того, что вы хотите сделать, это может быть разной сложности.Для начала я рекомендую вам прочитать Sun's учебное пособие по использованию компонентов Swing где есть примеры того, как использовать панели прокрутки и всплывающие меню.После того как вы ознакомитесь с ними и поэкспериментируете, у вас могут возникнуть более конкретные вопросы, на которые людям будет легче дать взвешенные ответы.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top