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


Автор: 404NotFound 28.10.2010, 13:34
Доброго времени суток. Хотя многие вещи в яве уже покорил, одна вешь, из примитивных до сих пор мне непонятна. Итак, имееться предположим мидлет со следующим содержанием
Код

public class Midlet extends MIDlet
{
public String str="test"
}

и имееться класс, например:
Код

public class tclass {

}


Так вот, как из класса tclass обратиться к переменной str из класса Midlet

Заранее спасибо  smile 

Автор: ivanovpv 28.10.2010, 15:43
Вообще то это принято делать так (оставив за скобками стилистику) - через геттеры и сеттеры:

Код

public class Midlet extends MIDlet
{
       private String str;

       public getStr()
       {
             return this.str;
       }

       public setStr(String str)
       {
             this.str=str;
       }
}

class tclass
{
     public void test()
     {
          Midlet m=new Midlet();
          m.setStr("test");
          System.out.println("Обращение к str: "+m.getStr());
     }
}

Автор: 404NotFound 2.11.2010, 17:59
 smile 

Ни как не получается, вот пример кода, в чем ошибка?
Пытаюсь из класса Midlet передать строку str в класс mycanvas
Код


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Midlet extends MIDlet implements CommandListener{
    private Command show = new Command ("Показать",Command.SCREEN,1);
    private Form myform = new Form ("Test");
    private TextField tf = new TextField("Enter text","",100,TextField.ANY);
    private Display mydisplay = Display.getDisplay(this);
    private String str;
    Canvas canvas = new mycanvas();

    public String getStr()
{
    return this.str;
}

    public void startApp() {

        myform.append(tf);
        myform.addCommand(show);
        myform.setCommandListener(this);
        mydisplay.setCurrent(myform);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
     public void commandAction (Command c, Displayable d) {
             if (c==show)
        {
            str=tf.getString();
            mydisplay.setCurrent(canvas);
        }
}
}
class mycanvas extends Canvas{

   public void paint(Graphics g) {
      Midlet m=new Midlet();
      g.setColor(0xffffff);
      g.fillRect(0, 0, getWidth(), getHeight());
      g.setColor(0x000000);
      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
      g.drawString(m.getStr(), 20, 20, Graphics.HCENTER | Graphics.TOP);

   }

}

Автор: oxigen 2.11.2010, 18:16
Midlet m=new Midlet(); вот это неверно. Ты не можешь сам создавать объект мидлет.

Вот так например сделай

Код

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Midlet extends MIDlet implements CommandListener{
    private Command show = new Command ("Показать",Command.SCREEN,1);
    private Form myform = new Form ("Test");
    private TextField tf = new TextField("Enter text","",100,TextField.ANY);
    private Display mydisplay = Display.getDisplay(this);
    private static String str;
    Canvas canvas = new MyCanvas();

    public static String getStr() { 
        return str;
    }

    public void startApp() {
        myform.append(tf);
        myform.addCommand(show);
        myform.setCommandListener(this);
        mydisplay.setCurrent(myform);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
    
     public void commandAction (Command c, Displayable d) {
         if (c==show){
            str=tf.getString();
            mydisplay.setCurrent(canvas);
        }
     }
}

class MyCanvas extends Canvas{

   public void paint(Graphics g) {
      g.setColor(0xffffff);
      g.fillRect(0, 0, getWidth(), getHeight());
      g.setColor(0x000000);
      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
      g.drawString(Midlet.getStr(), 20, 20, Graphics.HCENTER | Graphics.TOP);

   }

}
 

Автор: 404NotFound 2.11.2010, 19:22
 smile 
СПАСИБО!!!!!

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