Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Создание своих GUI компонентов


Автор: Altar 16.7.2005, 10:51
Существует ли простой способ создавать свои визуальные компоненты(и на основе swing ), описывать свойства, события и т.д. Может есть редактор какой-нибудь? smile
А может есть также дружественный способ прорисовку делать?

Автор: batigoal 16.7.2005, 10:58
Цитата(Altar @ 16.7.2005, 11:51)
Существует ли простой способ создавать свои визуальные компоненты(и на основе swing ),

Собственно, наследуешь любой из компонентов, хоть сам JComponent. Вот тебе пример своего компонента на основе JPanel:
Код

public class MyPanel extends JPanel
{
    private JButton button;
    private JPanel panel;

    MyPanel()
    {
        this.setLayout(new GridLayout(2,1));

        panel = new JPanel();
        panel.setName("line");
        this.add(panel);

        button = new JButton("Button");
        this.add(button);
    }
}

Обычно это делается с использованием технологии JavaBeans. Тогда потом можешь свой компонент даже в графический редактор интерфейса запихать.

Цитата(Altar @ 16.7.2005, 11:51)
Может есть редактор какой-нибудь?

Графические редакторы есть, но лучше ручками.

Цитата(Altar @ 16.7.2005, 11:51)
А может есть также дружественный способ прорисовку делать?

Не понял.

Автор: Altar 16.7.2005, 11:22
Цитата

Обычно это делается с использованием технологии JavaBeans. Тогда потом можешь свой компонент даже в графический редактор интерфейса запихать.

Можно подробнее(+ очень коротко о Java Beans) короче хочу свою я библиотеку сделать,
но не особо представляю как изменить вид моего нового Button на основе старого.

Цитата

Графические редакторы есть, но лучше ручками.

Ручками всё хорошо, да всё же о каких редакторах реч?

Автор: batigoal 16.7.2005, 11:43
Вообще говоря, JavaBeans описаны в любой фундаментальной книге по Java. (Например, у Ноутона и Шилдта - "Java 2. Full reference")

Идея заключается в том, что мы делаем компонент, то есть класс, который изолирован и самодостаточен. Его поля закапсулированы, и все взаимодействие осуществляется только через методы. Они могут быть как визуальными (то, что интересует тебя), так и невизуальными, то есть просто представлять из себя обычный объект. Есть еще Enterprise Java Beans, но это сооовсем другая степь.
Я сейчас посмотрел в FAQ, и удивился, что там нет статьи по этому поводу. Я этим займусь, в двух словах тут не расскажешь.

Цитата(Altar @ 16.7.2005, 12:22)
не особо представляю как изменить вид моего нового Button на основе старого.

Что ты имеешь в виду? Добавить картинку, помнять шрифт и т.д.?

Цитата(Altar @ 16.7.2005, 12:22)
Ручками всё хорошо, да всё же о каких редакторах реч?

Например, графические редакторы, встроенные в среды разработки (JBuilder, IDEA и так далее). Но это не очень хорошо - они обычно неудобны и, главное, зависимы от среды, т.е. непереносимы. Поэтому рекомендую обойтись ручным написанием, где это возможно.

Автор: Altar 16.7.2005, 12:00
Цитата
Что ты имеешь в виду? Добавить картинку, помнять шрифт и т.д.?

Я хочу создать свою библиотеку на подобие swing, чтобы в ней были все стандартные компоненты, нужные мне. Не только кнопки, но и JList, JListbar (надеюсь понятно, а то по памяти пишу и не помню точные названия), JProgressbar и т.д. То есть, компоненты должны будут выглядеть так как нужно мне. Одно дело на C++Builder это делать, другое на незнакомой пока мне Java. Например я не знаю как нарисовать и описать собственный выпадающий список, который должен быть похож на виноградную лозу.
Вот вроде всё подробно описал. smile

Автор: batigoal 16.7.2005, 12:09
Altar
Угу. Понятно. Задачка интересная и хорошая, но непростая.

Возможно, имеет смысл пойти по такому пути. В Java GUI существует такое понятие, как Look and Feel (L&F). Оно отвечает за стиль отображения уже существующих компонентов. Про это есть инфа тут: http://java.sun.com/docs/books/tutorial/uiswing/misc/plaf.html
Существуют уже готовые L&F, может, и попадется подходящая.

А вообще, подробный рассказ про ручную прорисовку компонентов есть здесь:
http://java.sun.com/docs/books/tutorial/uiswing/14painting/index.html

Автор: Altar 17.7.2005, 10:22
Ещё предстоит конечно разобраться (эх 11 лет убитых зря на английский) с этой статейкой, Кода в ней маловато что-то. Выходит что я могу сделать прорисовку, а затем добавить пару строчек в уже созданный код, и компоненты будут выглядеть уже по другому?
Я правильно понимаю?

Автор: batigoal 17.7.2005, 10:32
Если говорить о варианте L&F, то да. Главное - найти или сделать этот L&F, а применить его - нет проблем.

Если идти по второму пути, то, как я понимаю, нужно переопределять метод
Код

protected void paintComponent(Graphics g)

Это будет уже не пара строк.


Цитата(Altar @ 17.7.2005, 11:22)
эх 11 лет убитых зря на английский

Соооовсем не зря smile

Автор: Altar 17.7.2005, 10:51
Попробую я пожалуй 1 способ, возможно этого хватит. Эх... Тяжело октябрёнку smile
Спасибо!

Автор: batigoal 17.7.2005, 10:58
Всегда пожалуйста. Приходи к нам еще, всегда рады новым людям и новым вопросам. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)