Показать сообщение отдельно
Старый 08.07.2008, 05:25   #20
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Пишем либы для MidletPascal на JAVA

import javax.microedition.lcdui.Graphics;

public class Lib_test {
// ***********************************
 public static void printtext(String s,int x,int y){
    M.G.setColor(50,200,255);
    M.G.drawString(s,x,y-1,M.G.LEFT|M.G.TOP);
    M.G.drawString(s,x,y+1,M.G.LEFT|M.G.TOP);
    M.G.drawString(s,x-1,y,M.G.LEFT|M.G.TOP);
    M.G.drawString(s,x+1,y,M.G.LEFT|M.G.TOP);
    M.G.setColor(0,0,200);
    M.G.drawString(s,x,y,M.G.LEFT|M.G.TOP);
 }
// ***********************************
}
Ура! Работает! Выводит строку s на канвас по координатам x и y =) Текст выводится синий с голубой обводкой =)
Теперь есть такие вопросы:
1) Почему-то не получается вызвать репэинт из либы. Это возможно?
2) Как в либе обращаться к функции изменения шрифта? M.G.setFont() не работает.
3) Как в либе получить ширину экрана, вычесть из неё длину строки в пикселах и разделить на два? =) Ну типа чтобы вместо координаты x текст всегда по центру позиционировался. M.G.getClipWidth() и M.G.stringWidth(s) вроде не работают. =(
- - -
Я понимаю, что всё это легко делается на самом мидлет паскале, но мне нужно понять, как в либе это сделать, чтобы научиться писать что-то более сложное. Сильно не пинайте.
= = =
Добавлено позже:
Пардон, разобрался с половиной вопросов =)
import javax.microedition.lcdui.*;

public class Lib_test {
// ***********************************
 public static void printtext(String s,int y){
    M.G.setFont(M.G.getFont());
    int x = (M.G.getClipWidth()-M.G.getFont().stringWidth(s))/2;
    M.G.setColor(50,200,255);
    M.G.drawString(s,x,y-1,M.G.LEFT|M.G.TOP);
    M.G.drawString(s,x,y+1,M.G.LEFT|M.G.TOP);
    M.G.drawString(s,x-1,y,M.G.LEFT|M.G.TOP);
    M.G.drawString(s,x+1,y,M.G.LEFT|M.G.TOP);
    M.G.setColor(0,0,200);
    M.G.drawString(s,x,y,M.G.LEFT|M.G.TOP);
 }
// ***********************************
}
Такая конструкция работает. Но я не понял, как getFont() передавать параметры отображения шрифта. Например, я хочу маленький жирный шрифт сделать:
M.G.setFont(M.G.getFont(M.G.getFont().FACE_SYSTEM, M.G.getFont().STYLE_BOLD,M.G.getFont().SIZE_SMALL) );
Lib_test.java:6: getFont() in javax.microedition.lcdui.Graphics cannot be applied to (int,int,int)
    M.G.setFont(M.G.getFont(M.G.getFont().FACE_SYSTEM,M.G.getFont().STYLE_BOLD,M.G.getFont().SIZE_SMALL));
                   ^
1 error
Да и выглядит это слишком нагружено, можно как-нибудь сократить запись от повторений? А то только "M.G.getFont()" в одной строке сколько раз повторяется...
= = =
Добавлено ещё позже:
Блин, а что делать, если мне нужно глобальную переменную использовать? Ну я не знаю, как это в Джаве называется. То есть мне нужно в либе сделать несколько функций/процедур, которые будут использовать одни и те же переменные. Можно, конечно, сделать, чтобы функции возвращали значения, которые потом использовались бы в других функциях путём явной передачи их туда. Но дело в том, что там функция возвращает не одну переменную, а несколько. Может можно сделать что-то типа массива или... я даже не знаю. Чтобы в одной переменной сразу кучу передавать.
- - -
У меня класс есть, я его хотел подключить к мидлет паскалю хитрым способом. Типа написать либу, которая будет к тому классу обращаться по-мидлетпаскалевски, все процедуры объявил статичными, а при компиляции мне выдало, что те функции, к которым я пытаюсь обратиться из либы не являются статичными. То есть что, получается, я не могу из статичной функции одного класса обратиться к нестатичной функции другого класса? О_о Как выходить из такой ситуации?
- - -
В мидлет паскале можно создавать комбинированный тип данных. Полагаю, что это может пригодится, но как его связать с джавой?
- - -
P.S: подозреваю, что я опять всё напутал и вместо слова "функция" следовало употреблять слово "метод" =)

Последний раз редактировалось Phantom, 08.07.2008 в 08:03.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (20.09.2010)