Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Матиматика в Java ME


Автор: Ярослав 7.1.2011, 09:35
Доброе время суток помогите новичку.Пробую писать на NetBeans IDE 6.9.1,подскажите как мне одну ячейку прибавить другую при нажатии на кнопку они складуютса и в третей ячейки ответ.Пожалуйста пошагово как всё сделать.Извеняюсь за  такой глупый вопрос.За ранее спасибо

Автор: Ярослав 7.1.2011, 12:07
Люди ну помогите пожалуйста.Очень надо

Автор: ivanovpv 7.1.2011, 21:08
Матиматики в J2ME нет. Есть пипец и ужас от вашего русского...

Автор: Ярослав 8.1.2011, 12:16
Ну а как сделать такой пример как я попрасил????

Автор: Ярослав 8.1.2011, 17:44
Форумчани-и--и-и-и-и-и помогитете-е-е-е-е

Автор: dehax 8.1.2011, 20:26
Ярослав, опиши подробнее, что ты хочешь сделать.

Автор: Ярослав 9.1.2011, 13:02
Мне необходимо разместить на экран три ячейки для ввода цифр и кнопка решить.В первой и второй ячейки я ввожу цифры нажимаю на кнопку решить и в третей ячейки выводитса ответ например 2+2= 4. Заранее спасибо пишу в NetBeans IDE 6.9.1,пожалуйста порядок как всё сделать. Спасибо

Автор: dehax 9.1.2011, 14:30
Ярослав, ты новичок в Java 2 ME или у тебя есть хоть какой-то опыт программирования?
Короче, делать надо так:
  •  Создаёшь новый проект <Ctrl+Shift+N>, выбираешь Java ME -> Мобильное приложение -> Далее -> выбираешь для себя настройки (лично я не ставлю галочку напротив "Создать мидлет Hello")
  •  Вот, только что написал для тебя:
    Код

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    /**
     * @author Admin
     */
    public class Midlet extends MIDlet implements CommandListener {

        Form form;
        TextField first, second, third;
        int value1, value2, value3;
        Command CMD_SOLVE;
        Display display;

        public Midlet() {
            display = Display.getDisplay(this);
            form = new Form("Calculator");
            first = new TextField("", "", 10, 2);
            second = new TextField("", "", 10, 2);
            third = new TextField("", "", 10, 2);
            CMD_SOLVE = new Command("Решить", Command.OK, 1);
            form.append(first);
            form.append(second);
            form.append(third);
            form.addCommand(CMD_SOLVE);
            form.setCommandListener(this);
        }

        public void commandAction(Command c, Displayable d) {
            if(c == CMD_SOLVE) {
                value1 = Integer.parseInt(first.getString());
                value2 = Integer.parseInt(second.getString());
                value3 = value1 + value2;
                String value;
                value = String.valueOf(value3);
                third.setString(value);
                display.setCurrent(form);
            }
        }

        public void startApp() {
            display.setCurrent(form);
        }

        public void pauseApp() {
        }

        public void destroyApp(boolean unconditional) {
        }
    }

Автор: Ярослав 9.1.2011, 15:28
Спосибо большое,да я новичок, читаю книгу Гарнакова. Извеняюсь ещё один маленький вопрос, а как чтоб ответ появился на другой форме, в виде например зелёный фон и по центру напд:4

Автор: dehax 9.1.2011, 15:33
Это надо создавать класс, расширяющий Canvas, а потом использовать методы этого класса.

Автор: Ярослав 9.1.2011, 18:18
А можно, если не затруднит Вас кодом помочь

Автор: dehax 9.1.2011, 18:52
Ярослав, вот код, как Вы просили:

Midlet.java
Код

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
 * @author Admin
 */
public class Midlet extends MIDlet implements CommandListener {

    Form form;
    TextField first, second; //, third;
    int value1, value2, value3;
    Command CMD_SOLVE;
    Display display;
    MIDPCanvas canvas;
    boolean isPaint;

    public Midlet() {
        display = Display.getDisplay(this);
        form = new Form("Calculator");
        first = new TextField("", "", 10, 2);
        second = new TextField("", "", 10, 2);
        //third = new TextField("", "", 10, 2);
        CMD_SOLVE = new Command("Решить", Command.OK, 1);
        form.append(first);
        form.append(second);
        //form.append(third);
        form.addCommand(CMD_SOLVE);
        form.setCommandListener(this);
        isPaint = false;
        canvas = new MIDPCanvas(this);
    }

    public void commandAction(Command c, Displayable d) {
        if(c == CMD_SOLVE) {
            value1 = Integer.parseInt(first.getString());
            value2 = Integer.parseInt(second.getString());
            value3 = value1 + value2;
            String value;
            value = String.valueOf(value3);
            isPaint = true;
            display.setCurrent(canvas);
            canvas.paintOtvet(value);
            //third.setString(value);
            //display.setCurrent(form);
        }
    }

    public void startApp() {
        display.setCurrent(form);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

MIDPCanvas.java
Код

import javax.microedition.lcdui.*;

/**
 * @author Admin
 */
public class MIDPCanvas extends Canvas implements CommandListener {

    String otv;

    Midlet midlet;

    Command CMD_BACK;

    int screenWidth, screenHeight;
    /**
     * constructor
     */
    public MIDPCanvas(Midlet midlet) {
        this.midlet = midlet;

        screenWidth = getWidth();
        screenHeight = getHeight();

        try {
            CMD_BACK = new Command("Назад", Command.BACK, 1);
        // Set up this canvas to listen to command events
        setCommandListener(this);
        // Создаём комманду возврата на главную форму
        addCommand(CMD_BACK);
        } catch(Exception e) {
            e.printStackTrace();
        }
    } 
    
    /**
     * paint
     */
    public void paint(Graphics g) {
        if(midlet.isPaint) {
            //Заливаем экран зеленым цветом
            clearGreenScreen(g);
            //Устанавливаем надпись - ответ по центру
            g.drawString(otv, screenWidth/2, screenHeight/2, Graphics.BASELINE|Graphics.HCENTER);
        }
    }

    public void clearGreenScreen(Graphics g) {
        int color = g.getColor();

        g.setColor(0, 255, 0); //Установили зелёный цвет по системе: (красный, зелёный, синий)
        g.fillRect(0, 0, screenWidth, screenHeight);

        g.setColor(color);
    }

    
    public void paintOtvet(String s) {
        otv = s;
        repaint();
    }
    
    /**
     * Called when a key is pressed.
     */
    protected  void keyPressed(int keyCode) {
    }
    
    /**
     * Called when a key is released.
     */
    protected  void keyReleased(int keyCode) {
    }

    /**
     * Called when a key is repeated (held down).
     */
    protected  void keyRepeated(int keyCode) {
    }
    
    /**
     * Called when the pointer is dragged.
     */
    protected  void pointerDragged(int x, int y) {
    }

    /**
     * Called when the pointer is pressed.
     */
    protected  void pointerPressed(int x, int y) {
    }

    /**
     * Called when the pointer is released.
     */
    protected  void pointerReleased(int x, int y) {
    }
    
    /**
     * Called when action should be handled
     */
    public void commandAction(Command command, Displayable displayable) {
        if(command == CMD_BACK) {
            midlet.display.setCurrent(midlet.form);
        }
    }

}

Автор: Ярослав 9.1.2011, 20:26
Огромное спасибо, буду пробывать

Автор: Ярослав 10.1.2011, 00:08
Чёт с MIDPCanvas.java не получаетса, в чём может быть проблемма?????

Автор: dehax 10.1.2011, 00:12
Ярослав, приведите строки кода, где программа "падает", а также логи компилятора.

Автор: Ярослав 10.1.2011, 01:04
Я всял тупо ваш код вставил в созданые мной мидлеты.Кароче компеляция всё хорошо но когда устанавливаеш на телефон то создаютса две программы MIDPCanvas и Midlet. Нельзя както в одно единое это сделать???

Автор: Ярослав 10.1.2011, 15:17
Ау-у-у люди помогите может чтото делаю не так,а?

Автор: dehax 10.1.2011, 18:53
MIDPCanvas.java - это класс, расширяющий Canvas, а не мидлет!!! Вы создаёте 2 мидлета, т.е. 2 приложения в одном *.jar пакете, а надо мидлет и канвас. Если Вы копируете код, то сначала нужно в пустом проекте создать класс "Мидлет" и в этот класс скопировать мой код Midlet.java, а затем создать класс "MIDP Canvas" (правая мышь по "<пакет по умолчанию>" -> Создать -> MIDP Canvas) и в этот класс скопировать мой код MIDPCanvas.java. К сообщению прикрепляю папку с моим проектом NetBeans IDE 6.9.1. Загрузите её и откройте в NetBeans (Файл -> Открыть проект -> и укажите эту папку). В помощь даю ссылку на сайт по J2ME (очень советую): http://www.mobilab.ru/articles/index2.php?cat=3. УДАЧИ!!!  smile 

Автор: Ярослав 11.1.2011, 10:17
спасибо все хорошо. А можите помочь чтоб в центр ещё данныд разместить.Ну типа Результат умнажения : .....  и снизу Результат сложения : ....

Автор: dehax 11.1.2011, 23:24
Ярослав, я всегда рад помочь, но я Вас, опираясь на свой опыт, убедительно прошу: ЧИТАЙТЕ КНИГИ, УЧЕБНИКИ, СТАТЬИ ПО J2ME (http://www.mobilab.ru/articles/index2.php?cat=3). Что по методам, функциям, будет непонятно - спрашивайте. Пробуйте создавать программки сами, используйте в них новые типы классов, методы. Я начинал именно так. Ещё раз говорю: если непонятно, как использовать какие-то методы, куда их вставлять, то я помогу Вам кодом.

Как и в прошлый раз, прикрепляю папку с обновлённым проектом NetBeans. У меня всё, как Вы хотели, работает.

Автор: Ярослав 12.1.2011, 07:30
Огромное Вам спасибо за помощь. Все бы такие форумчани были, а то флуда много а толку ни какого

Автор: aaa25 25.1.2011, 21:37
если читаешь горнакова без диска к его книге - то скачай диск, а то еще долго будешь мучиться

Автор: Ярослав 28.1.2011, 12:54
Всем огромное спасибо. Уже уровень знаний больше.Закрываем тему спасибо ещё раз людям за помощь

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