PDA

View Full Version : سوال: نمایش textbox به این صورت 1-152256-092



karim orooji
سه شنبه 03 شهریور 1388, 21:04 عصر
سلام دوستان
من از جاوا هیچی نمیدونم
میخوام در textbox هر وقت عدد وارد میکنم مانند کد ملی وارد بشه ( منظورم با خط فاصله به این صورت 1-211552-095)
ممنون میشه راهنمایی کنید

silverfox
سه شنبه 03 شهریور 1388, 21:21 عصر
این جاواـ... اونی که سمت کلاینته مال وبه جاوا اسکریپته اساسا فرق می کنن با هم :دی تو بخش مربوطه مطرح کن...

manvaputra
چهارشنبه 04 شهریور 1388, 00:05 صبح
دوست عزیز می تونی برای اینکار تابعی رو توی رویداد Keyreleased مربوط به Textfieldet بنویسی:


String text = jTextField1.getText();

int len=text.length();

if (len == 3) {
jTextField1.setText(jTextField1.getText() + "-");
}
if (len == 10) {
jTextField1.setText(jTextField1.getText() + "-");
}
if(len>=13)
jTextField1.setText(text.substring(0, 12));



}

manvaputra
چهارشنبه 04 شهریور 1388, 00:06 صبح
اگه جایی برات گنگ بود بگو تا توضیح بدم

karim orooji
چهارشنبه 04 شهریور 1388, 00:22 صبح
دوست عزیز میشه یک مثال بزنی چون از جاوا چیزی نمیدونم
حتی نمیدونم این پاسخی که شما دادین کجا استفاده کنم (بازم ممنون از زحمتی که کشیدین)

karim orooji
چهارشنبه 04 شهریور 1388, 14:15 عصر
دوستان دزخواست کمک دارم

mojtaba14405
یک شنبه 08 شهریور 1388, 14:51 عصر
سلام دوست عزیز
با اجازه manvaputra ببخش منو جفت پا پریدم وسط حرفتون.
کد manvaputra کاملا درسته و همونیه که میخواهی.
ببین خط به خط برات میگم:


String text = jTextField1.getText();این کد یه متغیر از نوع string ایجاد میکنه به نام text
و سپس مقدار jTextField1 (که اسم همان jTextField (یا به قول شما textbox )است که میخواهی به این صورت باشه) را در متغیر text کپی میکند.


int len=text.length();در اینجا ما مقدار طول همان رشته ای را که در بالا تعریف کردیم در len ذخیره میکنیم.

حال اگر طول شما 3 بود یعنی کاربر سه کلمه زیر را وارد کرده

092 و حالا نوبت عبارت (-) است که باید اضافه شود.
برای این کار اگر طول 3 شد عبارت موجود در jTextFieldخودمان را گرفته ، یک (-) به آن اضافه کرده و دوباره به jTextField منتقل می کنیم و به صورت زیر می شود.


092-و اما اینکه کد را کجا قرار بدی:
باید داخل این عبارت قرار بدی
در واقع لیسنر تغییر نشان


jTextField1.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) {
اینجا
}
});

توی keylistener هم میتونی قرار بدی که خیلی عاقلانه تره .


jTextField1.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {

}

public void keyPressed(KeyEvent e) {

}

public void keyReleased(KeyEvent e) {
اینجا
}
});

حالا هر وقت یه عبارت تایپ بشه یک بار عبارت بالا فراخوانی میشه .
یعنی کداصلی اینه :


jTextField1.addKeyListener(new KeyListener() {

public void keyTyped(KeyEvent e) {
}

public void keyPressed(KeyEvent e) {
}

public void keyReleased(KeyEvent e) {
String text = jTextField1.getText();
int len = text.length();

if (len == 3) {
jTextField1.setText(jTextField1.getText() + "-");
}
if (len == 10) {
jTextField1.setText(jTextField1.getText() + "-");
}
if (len >= 13) {
jTextField1.setText(text.substring(0, 12));
}

}
});

مثال :
مثلا کاربر به ترتیب این ها رو بده این شکلی میشه :
عبارت تایپ شده عبارت نشان داده شده


0 0
9 09
2 -092
1 092-1
.
.
.

امیدوارم مشکلت حل شده باشه:چشمک:

karim orooji
یک شنبه 08 شهریور 1388, 18:20 عصر
مرسی مشکلم از این بابت حل شد ممنون
الان مشکلم سر اینکه فارسی در textbox تایپ شود ممنون میشم اونو بیشتر توضیح بدین
و اینکه keylistener کجا قرار داره ممنون

mojtaba14405
یک شنبه 08 شهریور 1388, 21:20 عصر
برای تایپ فارسی کافیه ALT+SHIFT سمت چپ کیورد رو بزنی دیگه میشه فارسی !!!
خیلی راحته توی جاوا عین کد رو نوشتم این keyListener همون قسمت قرمز کد زیر است که برات نوشتم:


jTextField1.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {

}

public void keyPressed(KeyEvent e) {

}

public void keyReleased(KeyEvent e) {
اینجا
}
});با فرض اینکه jtextfield1 همان متغیرت باشه.
این شبیه Evantها در سی شارپ هست.