ورود

View Full Version : سوال: خواندن از textfield



don-pooria
دوشنبه 09 فروردین 1389, 13:55 عصر
من یه کلاس نوشتم که توش یه دکمه (add) داره که وقتی زده بشه یه dialog box باز میشه
که توش یه textfield که (name) و یه دکمه (done) هست
یه کلاس contact دارم که یه فیلد name داره
میخواهم وقتی done زده میشه چیزی که توی textfield هست تو contact نوشته شه چیکار باید بکنم ؟؟


class Menu extends Frame implements ActionListener
{
Contact head=new Contact(),last;
Button[] bList = new Button[4];
Menu(){
super("Menu");
final int w = 500, h=500;
setSize(w,h);
setLayout(new FlowLayout(FlowLayout.CENTER));
Button add =new Button("add");

bList[0]=(Button) add(add);

CheckboxGroup cbg;
for(int i=0;i<bList.length;i++)
bList[i].addActionListener(this);
}
////////////////////////////////////////////////////////
public void actionPerformed(ActionEvent ae){
for(int i=0;i<bList.length;i++)
if(ae.getSource()==bList[i]){
if(i==bList.length-4)
Menu m = null;
Add d=new Add (m,"new contact",head);
last=head;
d.setVisible(true);
}
}
////////////////////////////////////////////////////////////////////////

اینم کلاس add

package contact;
import java.awt.*;
import java.awt.event.*;

class Add extends Dialog implements ActionListener
{
Add(Frame parent,String title,Contact nod){
super(parent,title,false);
Button don =new Button("done");
setSize(300,400);
TextField name=new TextField(20);
setLayout(new GridLayout(12,2,10,10));
Label nam=new Label("name",Label.RIGHT);
add(nam);
add(name);
add(don);
name.addActionListener(this);
don.addActionListener(this);
}
public void actionPerformed(ActionEvent aa){

if(aa.getActionCommand().equals("done")){
nod.name=name.getText();
dispose();}
}
}


خیلی لازمه وقتی ندارم تورو خدا کمکم کنیدمنتظرم

jlover
سه شنبه 10 فروردین 1389, 01:01 صبح
مطالعه ی کلاستون - حتی با کپی کردن و قرار دادن کدها در ویرایشگر - کار عذاب آوری بود + کلاس Contact رو هم قرار ندادید !
توصیه های کلی :
فقط جایی که مجبور هستید و کلاس معادل وجود نداره از کتابخونه ی قدیمی awt استفاده کنید.مثلن بجای Frame میتونستید از JFrame استفاده کنید ..

قرارداد های نامگذاری رو رعایت کنید :
کلاسی با نام Menu در کتابخاانه ی awt وجود داره ، پس از این اسم استفاده نکنید(به جاش میتونید از myMenu مثلن استفاده کنید)اینکار از تصادم ارجاعها هنگام کامپایل جلوگیری میکنه و درک مسئله تون برای منی که توی یه انجمن میخام به شما کمک کنم خیلی ساده تر خاهد بود

برای قرار دادن کد در پستتون از تگ code استفاده کنید.اینجوری شانس بیشتری دارید که افراد به برنامه تون نگاه بندازند !

و اما مسئله ای که عنوان کردید :
رشته ای که در فیلد متنی هست رو بواسطه ی متد getText درون متد actionPerformed میگیرید و بعد اون رو .......من هیچ پیشگویی ای متاسفانه نمیتونم بکنم که Contact چی هست ....



در ضمن تو این دستور بجای m واژه ی this رو قرار بدید ببینید چی میشه !
Add d=new Add (m,"new contact",head);

don-pooria
سه شنبه 10 فروردین 1389, 10:09 صبح
jlover (http://www.barnamenevis.org/forum/member.php?u=114593) ممنون از اینکه روش وقت گذاشتی

این contact


public class Contact {
String name,lname,web,email,cell,tell,add;
Contact link;
}


مشکل من اینه که میخام توی dialog box وقتی دکمه done میزنم هرچی توی textfield هست بریزه توی nod که یه contact ولی وقتی توی actionPerformed می نویسم nod.name=name.getText(); 1
از اوناییکه خط کشیدم ایراد میگیره

jlover
سه شنبه 10 فروردین 1389, 19:39 عصر
nod.name=name.getText(); 1
از اوناییکه خط کشیدم ایراد میگیره

خب چی میگه ؟
متاسفانه اینجوری نمیشه کمک چندانی به شما کرد اگه یک کد تمیز ، کامل و در عین حال خلاصه * قرار ندید.مثلن اینبار باز هم متد main ندارید !

و حداقل نگفتید چه پیغام خطایی دریافت میکنید تا من دوباره رو به کار حدسی نیارم :
آیا شما اصلن nod رو در کلاس دایالاگ یا متد actioPerformed ش اعلان کردید که حالا میخاید یکی از فیلدهاش(name ) رو مقداردهی کنید ؟
nod شما آرگومانی هست که فقط در متد سازنده ی Add اعتبار داره نه در actionPerformed پس باید یه متغیر سراسری همجنس nod در حوزه ی کلاس Add اعلان کنید و مقدار آرگومان ارسالی در سازنده رو به اون نسبت بدید.حالا میتونید در actionPerformed از این متغیر استفاده کنید

اگر کدهای پراکنده تون رو توی این قسمتی که من بررسی کردم ( مخصوصن تو کلاس Add ) چیزی ازش جا ننداخته باشین ( یعنی دیگه زیادی خلاصه ش نکرده باشید :چشمک: ) قطع به یقین این ایراد تو برنامه تون وجود داره

-------------------------------------------------------------------------
*
یعنی یک برنامه ی کامل قابل اجرا که منتج به همون نتایجی بشه که دقیقن شما رو سیستمتون میگیرید،اینجوری ما هم میتونیم ببینیم گیر کار از کجاست ( مثلن در مورد برنامه ای که قرار دادید،من هزار و یک حدس میزنم _ تقریبن:چشمک: ) یعنی همه ی کدهاتون منهای تمام قطعاتی که مطمئنید ارتباطی به مشکلتون نداره ، حتی اگه شده تغییراتی بدید که خلاصه بشه و آماده ی پست کردن و البته نامگذاری مناسب فراموش نشه و چه بهتر که با خطوط توضیحات هم کمک کنید به ما و خودتون