ورود

View Full Version : مبتدی: ایجاد کلاس Button



jalalx
پنج شنبه 30 اردیبهشت 1389, 08:53 صبح
سلام به جامعه ی جاوا کارهای فارسی زبان(!)
من می خوام یه دکمه درست کنم برای یه نرم افزار، باید بتونه فکوس رو قبول کنه، من یه C#‎ کارم اما تو Java تازه کارم. کسی میتونه یه کمکی کنه؟ ممنون می شم!:چشمک:
کدی که تا آلان نوشتم اینه اما متن روشو نشون نمی ده...





import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/*
* Button.java
*
* Created on May 20, 2010, 7:44 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

/**
*
* @author Jalal
*/

public class Button extends CustomItem{


private int x, y, width, height;
private String text;

public Button(String title) {
this(title, 0, 0, 20, 20);
}

public Button(String title, int x, int y, int width, int height) {
super("");

setX(x);
setY(y);
setWidth(width);
setHeight(height);
}

// CustomItem abstract methods.
public int getMinContentWidth() { return width; }

public int getMinContentHeight() { return height; }

public int getPrefContentWidth(int width) {
return getMinContentWidth();
}

public int getPrefContentHeight(int height) {
return getMinContentHeight();
}

public void paint(Graphics g, int w, int h) {
g.drawRect(x, y, width, height);
g.drawString(text, x, y, 0);
}


public String getText(){
return text;
}

public void setText(String text){
this.text = text;
}

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}

public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}

public int getWidth() {
return width;
}

public void setWidth(int width) {
this.width = width;
}

public int getHeight() {
return height;
}

public void setHeight(int height) {
this.height = height;
}
}

mahdi68
پنج شنبه 30 اردیبهشت 1389, 11:56 صبح
سلام
دوست عزیز آیا واسه برنامه نویسی موبایل میخوای این کار انجام بدی ؟؟؟ تالار درست اومدی ؟؟؟
اگه آره --> اگه میخوای یه کلید در صفحه داشته باشی مانند همونی که تو ویندوز موبایل درگ و دراپ میشه تو Java ME همچین امکانی نیست و باید خودتون کد بنویسید و باید از آیتم های سطح پایین استفاده کنین یعنی از Canvas تا بتونین فکوس داشته باشین

jalalx
پنج شنبه 30 اردیبهشت 1389, 13:32 عصر
سلام
دوست عزیز آیا واسه برنامه نویسی موبایل میخوای این کار انجام بدی ؟؟؟ تالار درست اومدی ؟؟؟
اگه آره --> اگه میخوای یه کلید در صفحه داشته باشی مانند همونی که تو ویندوز موبایل درگ و دراپ میشه تو Java ME همچین امکانی نیست و باید خودتون کد بنویسید و باید از آیتم های سطح پایین استفاده کنین یعنی از Canvas تا بتونین فکوس داشته باشین

آره، اگه این کد رو نگاه می کردی می دیدی که درست اومدم!




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


ممنون از اینکه جواب دادی ولی فکر نمی کنم اون قدر هم سخت باشه! هر CustomItem که روی فرم قرار میگیره به طور اتوماتیک focus رو داره. هنگام به ارث بری از این کنترل یه پارامتر رشته ای می گیره که اونو مستقیم چاپ می کنه. وقتی من رویداد Paint رو Override کردم و یه مستطیل رسم کردم با اینکه x,y رو صفر دادم ولی باز هم زیر اون پارامتر رشته ای که رو فرم رسم کرده، مستطیل رو رسم کرد:گریه:!
فکر کنم اگه یه حرفه ای J2ME کار پیدا بشه مشکل حله، چون من از این کارها(کار با شئ Graphics) تو C# زیاد انجام دادم و جاوا هم مشابه اونه ولی این یکی یکم ... :عصبانی:!

mahdi68
پنج شنبه 30 اردیبهشت 1389, 21:03 عصر
دوست عزیز من روش به شما گفتم دیگه باید از Canvas استفاده کنی !!! شما داری لقمه دور سرت میچرخونی چرا ؟؟؟ باید از عناصر سطح پایین استفاده کنی در ضمن کلاس هاس J2ME با جاوا معمولی یکم فرق داره اینم در نظر بگیرین

jalalx
جمعه 31 اردیبهشت 1389, 12:38 عصر
دستم به شلوارتون! عجب فروم خلوتی دارین ها! کسی از این ورها رد نمی شه؟:افسرده:
من هنوز منتظر هم! اگه کسی نمونه کد داشت و گذاشت خیلی ممنون می شم آخه با Canvasکار نکردم. اگه یاد گرفتم حتما اینجا می گذارم.

mahdi68
جمعه 31 اردیبهشت 1389, 13:36 عصر
ذوست عزیز کدام IDE استفاده میکنید ؟؟؟
اگه netbeans هست از قسمت new file یک MIDP Canvas به پروژه اضافه کنید
خب وقتی این کار کردید شما اسکلت کلی canvas مشاهده خواهید کرد

public void paint(Graphics g) {
g.drawString("Sample Text",0,0,Graphics.TOP|Graphics.LEFT);
}
این قسمت مربوط به رسم گرافیک شماست شما تمام اشکال تو این قسمت رسم خواهین کرد
بقیه هم که از اسمشون معلومه مربوط به رویداد های فشرده شدن کلید و صفحه لمسی هست
شما هر جا که لازم شد paint دو باره فراخوانی بشه از repaint() باید استفاده کنید

jalalx
جمعه 31 اردیبهشت 1389, 14:30 عصر
ممنون از جوابتون!
آخرش از CustomItem استفاده کردم. زیاد قشنگ نیست ولی کار منو راه انداخت، اگه خواستین CommandListener و غیره هم اضافه کننین مشکلی ندارین...





import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/*
* Button.java
*
* Created on May 20, 2010, 7:44 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

/**
*
* @author Jalal
*/

public class Button extends CustomItem{


private int x, y, width, height;
private String text;
private MathOperation operation;

public Button(){
this("button", 0, 0, 20, 20);
}

public Button(String title) {
this(title, 0, 0, 20, 20);
}

public Button(String title, int x, int y, int width, int height) {
super("");
text = title;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}

protected void keyPressed(int keyCode){
operation.Execute();
}

public void paint(Graphics g, int x, int y) {
g.drawRect(0, 0, width, height);
g.drawString(text, width / 2 - 1, 1, Graphics.TOP | Graphics.LEFT);
}

protected int getPrefContentWidth(int height){return this.width;}

protected int getPrefContentHeight(int width){return this.height;}

protected int getMinContentWidth(){return width;}

protected int getMinContentHeight(){return height;}

public String getText(){
return text;
}

public void setText(String text){
this.text = text;
}

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}

public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}

public int getWidth() {
return width;
}

public void setWidth(int width) {
this.width = width;
}

public MathOperation getOperation() {
return operation;
}

public void setOperation(MathOperation op) {
this.operation = op;
}

public int getHeight() {
return height;
}

public void setHeight(int height) {
this.height = height;
}
}