Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработать, отрисовать 
:(
    Опции темы
Амортизатор
Дата 15.11.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Подскажите, как создать в апплете класс, который мог бы сам обрабатывать события (аналог виндового окна), т е что выбрать за базовый класс. Мне нужно реализовать в апплете интерфейс (за что отвечает отделный класс). Как-то не хочется обрабатывать и прорисовывать в классе апплета, хорошо бы снадбить этим тот самый интрфейсный класс.
Добавлено @ 23:05
Как варианты:
1) Понаследовать от Applet (можно ли?)
2) Применить внутри апплета другой апплет (т е менющку импортнуть). Можно ли?


--------------------
Поехали!
PM MAIL   Вверх
batigoal
Дата 15.11.2005, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 3
Всего: 151



Цитата
Понаследовать от Applet (можно ли?)

Можно. Обычно так и делается.

Цитата
Применить внутри апплета другой апплет (т е менющку импортнуть). Можно ли?

Может быть, и можно, но наверняка не стоит. Лучше использовать внутри апплета JPanel, либо другой свинговый компонент (ну и своих наследников от этих компонентов).


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Амортизатор
Дата 16.11.2005, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Спасибо. Вопрос вдогонку - можно ли импортнуть в .class файл ресурс (битмап например) как в exe-ник?smile
Иль придется ограничиться пакиджем?


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 16.11.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата
Спасибо. Вопрос вдогонку - можно ли импортнуть в .class файл ресурс (битмап например) как в exe-ник?

В class файл ничего кроме кода нельзя добавить (вернее можно, но так лучше не делать). Все ресурсы лучше добавить в JAR, это и будет аналог exe-ника.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 16.11.2005, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Спасибо всем.


--------------------
Поехали!
PM MAIL   Вверх
Амортизатор
Дата 16.11.2005, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Окно второго класса не запускается!
s.show() - не помогает.

Напоминаю, этот класс производен от Applet и создается в другом классе-апплете.


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 16.11.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Апплет это не окно, и просто так его показать нельзя. Нельзя из Java открыть новое окно браузера и показать в нем апплет. Если тебе нужно окно то создай Frame или JFrame и уже у них вызывай show().


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 16.11.2005, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Мне нужно сделать следующее.
Я не знаю, как это сделано тут, но при программировании под винду можно апи-функциями создать дочернее окно (используя хендл главного окна). Можно задать ему определенный стиль - это поддерживается самой Windows и реализуется опять таки апи-функциями. Например, без рамки. Или, напрмер, в MFC наследуем от CWnd и готово окно.
Как сделать тоже самое тут? Мне нужно окно без всяких рамочек и заголовков. Окно я сделал (наследник - JFrame) но оно не того стиля.

З Ы Извиняюсь за бестолковые вопросы, Java юзаю только несколько дней, нужно быстро сделать апплет.

Это сообщение отредактировал(а) Амортизатор - 16.11.2005, 21:05


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 16.11.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата
Мне нужно окно без всяких рамочек и заголовков. Окно я сделал (наследник - JFrame) но оно не того стиля.

Окно без "оформления" создается так:
Код
JFrame frame = new JFrame();
frame.setUndecorated(true);



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 17.11.2005, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Это не совсем то. Мне видишь ли надо, чтобы окно было частью интерфейса, а не существовало отдельно. Короче надо, чтобы окно вело себя как типичные окна Windows - кнопки, менюшки и др. контролы. А то сворачиваешь браузер, а окно остается... Оно отдельно от браузера и апплета, из которого вызывается, а надо, чтобы оно "лежало" на нем.


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 17.11.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата
Оно отдельно от браузера и апплета, из которого вызывается, а надо, чтобы оно "лежало" на нем.

Не понимаю. Апплет это часть веб страницы, тебе надо чтобы окно отображалось внутри апплета?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 17.11.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Говоря другим языком, мне надо написать контрол - меню для апплета. Не контрол-апплет, а контрол ДЛЯ АППЛЕТА. Т е сам апплет предназначен для других задач, в нем есть класс-менюшка. Надо, чтобы этот класс создал окно, принадлежащее апплету, итз которого вызывается. Говоря окно, я использую терминологию винды, может это у вас как то по другому называется. В Windows любой контрол создает свое собственное окно, в котором прорисовывется. Мне нужно тоже самое для апплета.


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 17.11.2005, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата
Надо, чтобы этот класс создал окно, принадлежащее апплету, итз которого вызывается. Говоря окно, я использую терминологию винды, может это у вас как то по другому называется. В Windows любой контрол создает свое собственное окно, в котором прорисовывется. Мне нужно тоже самое для апплета.

Я все равно не понимаю smile
Ты или приведи некий пример поведения, который можно посмотреть или опиши какое поведение тебе требуется от окна.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 17.11.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Хорошо.
Рассмотрим Windows-приложение. Вот мы создаем функцией Create окно. Это в общем случае - главное окно приложения. Предположим, мы хотим написать свой компонент-меню, который затем разместим на главном окне. Как это делается? Очень просто. Вызываем апи-функцию, и создаем для нашего главного окна ДОЧЕРНЕЕ окно. Дочернее окно полностью автномно в том смысле, что само себя отрисовывает в ответ на сообщение WM_PAINT, может само перехватывает сообщения от системы. Ну, мы рисуем в этом окне кнопочки, можем задать если требуется форму окна. Таким образом наш компонент - кнопочка там или меню - это обыкновенное дочернее окно Windows.

Так вот, мне нужно то же самое! К примеру, хотим сделать апплет. Предположим, предназначенный для показа изображений. Нам нужно создать менюшку и разместить ее на апплете. Нажал на одну - показывается одно изображение и т д. Конечно, я мог бы нарисовать эту менюху прямо на апплете, однако тогда пришлось бы, во первых, отрисовывать и обрабатывать сообщения прямо в окне главного апплета, во вторых, не так просто будет эту менюху затем перенести в другой апплет. Поэтому я хочу создать меню в ДРУГОМ окне, дочернем по отношению к главному окну апплета. Можно ли это сделать? То что мне пока удалось сделать - это создать окно, независимое от апплета. Наприсмер, сворачиваем браузер, а это окно прдолжает висеть в воздухе.


--------------------
Поехали!
PM MAIL   Вверх
batigoal
Дата 17.11.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 3
Всего: 151



Все значительно проще, как я понял - надо просто сделать меню, и добавить его в окно апплета.
Цитата
Таким образом наш компонент - кнопочка там или меню - это обыкновенное дочернее окно Windows.

А у нас это - просто компонент, и не более того. Он автономен сам по себе.

Это сообщение отредактировал(а) Lamer George - 17.11.2005, 22:30


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Амортизатор
Дата 17.11.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Именно. Обычнное меню, не более того.
Ладно, чем бы это не называлось, мне нужно сделать нечто, которое само себя отрисовывает (т е имеет свою метод Paint) , сам обрабатывает события, и одновременно не может существовать без апплета. Т е чтоб не было отдельного окна, которое отвязано от апплета. Если технология апплетов не позволяет добиться такой элементарной вещи, то прямо скажем, эта технология - г.

Это сообщение отредактировал(а) Амортизатор - 17.11.2005, 22:45


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 18.11.2005, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



У любого компонента (java.awt.Component) есть метод paint() который и отвечает за его рисование (его момжно переопределить), так же любой компонент получает события клавиатуры, мыши и т.д.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 18.11.2005, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Я не спорю, есть. Но при этом эти компоненты ОТДЕЛЬНЫ от апплета, т к создают отдельное окно. А мне нужно, чтобы эти компоненты "ложились" на апплет. Чтобы реализовать на их основе меню для МОЕГО апплета. В смысле НЕ апплет-меню как таковой, а МЕНЮ именно ДЛЯ апплета, который служит вовсе для других целей. Как еще объяснить...


--------------------
Поехали!
PM MAIL   Вверх
pvo
Дата 18.11.2005, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: нет
Всего: 7



Почитай про JComponent.
PM MAIL ICQ   Вверх
batigoal
Дата 18.11.2005, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 3
Всего: 151



Цитата
Но при этом эти компоненты ОТДЕЛЬНЫ от апплета, т к создают отдельное окно. А мне нужно, чтобы эти компоненты "ложились" на апплет. Чтобы реализовать на их основе меню для МОЕГО апплета. В смысле НЕ апплет-меню как таковой, а МЕНЮ именно ДЛЯ апплета, который служит вовсе для других целей

По-моему, под это описание подходит самое обычное использование меню, т.е. вот такое:
Код

public class MyApplet extends JApplet {

    JMenuBar menuBar;
    JMenu menu, submenu;
    JMenuItem menuItem;
    JRadioButtonMenuItem rbMenuItem;
    JCheckBoxMenuItem cbMenuItem;

    public void init() {
        
        menuBar = new JMenuBar();
        menu = new JMenu("A Menu");
        menuBar.add(menu);
        menuItem = new JMenuItem("A text-only menu item");
        menu.add(menuItem);
        
        this.setJMenuBar(menuBar);
        
        JLabel label = new JLabel("You are successfully running a Swing applet!");
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setBorder(BorderFactory.createMatteBorder(1,1,1,1,Color.black));
        getContentPane().add(label, BorderLayout.CENTER);
    }
}

Или нет?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Амортизатор
Дата 18.11.2005, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Lamer George, это само собой. Но мне нужно написать свое меню. Поэтому речь идет о том, как выбить окошко под это дело. В Windows я б создал окно и нарисовал бы меню на нем. А тут что делать?


--------------------
Поехали!
PM MAIL   Вверх
LSD
Дата 18.11.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата
Lamer George, это само собой. Но мне нужно написать свое меню. Поэтому речь идет о том, как выбить окошко под это дело.

Зачем тебе окно? Свой компонент можно реальзовать и без окна.
Попробуй отвлечься от Windows и объяснить, что ты хочешь увидеть на экране, представь что программа работает под Solaris.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Амортизатор
Дата 18.11.2005, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Видел боковое меню Касперского 5.0? Те же яйца, только в профиль. Меню не прорисовывается динамически (RoundRect), а грузится из битмапа. При щелчке каждый пункт разворачивается (с анимацией). Просто после щелчка выводится другой битмап и передвигается вниз. Все остальные пункты меню, расположенные ниже, тоже передвигаются.
Все это уже реализовано. Но отрисовывается меню и обрабатываются события в самом апплете. А мне нужно создать отдельный компонент, который сам бы себя отрисовывал и обрабатывал события. Мне просто нафиг не нужно загромождать код основного апплета и надо сделать, чтобы код менюхи был легко переносимым (видишь ли, я намерен его поюзать еще). Этот компонент будет встроен в апплет.


--------------------
Поехали!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.1500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.