Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Картина javax.microedition.lcdui.Graphics на компоненте LWUIT
Каков был бы лучший метод для получения пользовательского элемента (то есть с использованием собственной графики J2ME), окрашенного на элементах LWUIT?
Пользовательский элемент-это реализация из библиотеки сопоставления, которая рисует его содержимое (например, google map) в графический объект. Как можно было бы нарисовать результат непосредственно на элементах LWUIT (на данный момент я пытаюсь нарисовать его на компоненте).
Является ли единственным способом написать оболочку в пакете LWUIT, которая будет раскрывать ее внутреннюю реализацию?
Редактировать:
Джон: ваше решение выглядит как много техники: P то, что я в конечном итоге использовал, это следующая оболочка:
package com.sun.lwuit;
public class ImageWrapper {
private final Image image;
public ImageWrapper(final Image lwuitBuffer) {
this.image = lwuitBuffer;
}
public javax.microedition.lcdui.Graphics getGraphics() {
return image.getGraphics().getGraphics();
}
}
Теперь я могу получить графический элемент 'native' из LWUIT. Краска на нем-эффективно живопись на изображении LWUIT. И я могу использовать изображение для рисования на компоненте.
И это все еще выглядит как хак :)
Но реальная проблема-это 50 кб накладных расходов кода, даже после запутывания. Но это вопрос для другого поста :)
/JaanusSiim
Я не думаю, что какой-либо взлом необходим. Вы можете подклассировать класс компонента LWTUI, а затем вы можете добавить все, что хотите, в графический контекст компонента. Вы получаете не собственный lcdui.Graphics объект, а объект с тем же интерфейсом, который прост в использовании.
Если вам действительно нужно передать lcdui.Graphics в какую-то базовую библиотеку, чтобы отобразить ее выходные данные, я бы предложил следующее:
Где-то в коде вашего компонента (делайте это только тогда, когда содержимое компонента действительно нужно изменить):
private Image buffer = null; // keep this
int[] bufferArray = new int[desiredWidth * desiredHeight];
javax.microedition.lcdui.Image bufferImage =
Image.createEmptyImage(desiredWidth, desiredHeight);
thirPartyComponent.paint(bufferImage.getGraphics());
bufferImage.getRGB(bufferArray,0,1,0,0,desiredWidth, desiredHeight);
bufferImage = null; //no longer needed
buffer = Image.createImage(bufferArray, desiredWidth, desiredHeight);
В компонентной краске (g) метод:
g.drawImage(0,0, buffer);
Делая хак, который вы сделали, вы теряете мобильность, а также sice вы подвергаете реализации частный объект, который вы также можете сломать другие вещи.
Надеюсь, это поможет.
Основываясь на javadoc для LWUIT и J2ME и предполагая, что пользовательский класс J2ME является холстом , похоже, что вам придется:
- Класс компонентов подкласса LWUIT , обертывающий пользовательский компонент J2ME
- Переопределите метод paint() компонента LWUIT
- Подкласс графический класс J2ME обернуть графический класс LWUIT и передать все вызовы метода через
- Сдать в обернутом реализации графика J2ME на способ нарисовать пользовательский компонент для J2ME это
Этот третий шаг-уродливый. Проверьте список рассылки LWUIT, чтобы узнать, не было ли у кого-нибудь такого раньше. Из опубликованного APIs я не вижу другого способа сделать это.
Правка: Хак, добавленный в вопрос, выглядит лучше, чем мой хак для изображения. То, что у меня есть, может быть лучше для общего случая, но я не знаю ни LWUIT, ни J2ME достаточно хорошо, чтобы действительно сказать это.