♨️ جلسه چهارم - کلاس JTextField درجاوا
کلاس JTextField اجزای گرافیکی "متنی" است که با شی ساختن از آن به شما اجازه میدهد یک خط متن را ویرایش کنید.برای تصوری بهتر از این اجزای گرافیکی برنامه Notepad را باز میکنیم و از منو Edit گزینه Find را انتخاب میکنیم:تصویر(1)
در تصویر(1) ما قصد داریم کلمه "جاوا" را در میان متن موجود در برنامه Notepad پیدا کنیم.فیلدی که در بخش find، کلمه مورد نظر را برای پیدا شدن وارد میکنیم همان copmponent یا اجزای گرافیکی JTextField هستش که با رنگ قرمز مشخص کرده ایم. احتمالا با همچین اجزای گرافیکی زیاد برخورد کرده باشید مثلا هنگام ثبت نام و وارد کردن اطلاعات کاربری. متنی که در این اجزای گرافیکی وارد میکنیم دارای ویژگی های زیر است:
1. بصورت یک خط یا یک سطر است.
2. تک متن هستش یعنی نقطه سر خط نداریم! :-) سطر بعد ندارد! یعنی نمیتوانیم متنی وارد آن کنیم و متن جدیدی در سطر بعد وارد کنیم!
3. بر خلاف JLabel توسط کاربر نیز قابل ویرایش هستش یعنی شما میتوانید متن مورد نظر را جایگزین متن قبل کنید.
• خب حالا که ذهنیتی نسبت کلاس JTextField پیدا کردیم سراغ سازنده ها، متدها و روش پیاده سازی آن در جاوا می رویم.
سازنده های پرکاربرد کلاس JTextField :
توصیف | سازنده(constructor) |
برای ایجاد یک TextField جدید بدون پارامتر ( سفید یا همون خالی ) | JTextField() |
برای ایجاد یک TextField جدید با یک متن خاص | JTextField(String text) |
برای ایجاد یک TextField جدید با یک متن و ستون خاص | JTextField(String text, int columns) |
برای ایجاد یک TextField جدید با یک ستون خاص | JTextField(int columns) |
متد های پرکاربرد کلاس JTextField :
مثال:
package swing_javalike ; import javax.swing.*; class TextFieldExample { public static void main(String args[]) { JFrame f= new JFrame("TextField Example"); JTextField t1,t2; t1=new JTextField("Welcome to Javalike channel"); t1.setBounds(50,100, 200,30); t2=new JTextField("Swing Tutorial"); t2.setBounds(50,150, 200,30); f.add(t1); f.add(t2); f.setSize(400,400); f.setLayout(null); f.setVisible(true); } } |
خروجی: تصویر(2)
• همان طور که مشاهده میکنید ما در این برنامه تو TextField داریم که متن دلخواه ما را نمایش میدهند.اگر برنامه رو اجرا کنید خواهید دید که میتوانید متن های درون هر دو TextField را ویرایش کنید.
• هر چقدر متن به این دو TextField اضافه کنید به سطر بعد نمیتوانیم برویم.
JFrame f = new JFrame("TextField Example"); |
JTextField t1,t2; |
• ایجاد دو شی از نوع کلاس JTextField
• این دو شی null هستند و باید با صدا زدن سازنده کلاس آنها را ایجاد کنیم.
t1=new JTextField("Welcome to Javalike channel"); |
• صدا زدن سازنده کلاس JTextField و ایجاد شی با نام t1
• پارامتر سازنده کلاس متن موجود در فیلد ما را تشکیل میدهد.
t1.setBounds(50,100, 200,30); |
• با استفاده از متد setBounds مختصات و ابعاد اجزای گرافیکی TextField را تنظیم میکنیم.
• در این متد x=50، y=100، width=200 و height=30
t2=new JTextField("Swing Tutorial"); t2.setBounds(50,150, 200,30); |
• تمام کارایی که برای فیلد t1 انجام دادیم برای فیلد t2 نیز انجام میدهیم.
f.add(t1); f.add(t2); f.setSize(400,400); f.setLayout(null); f.setVisible(true); |
• افزودن component ها (اجزای گرافیکی) TextField های t1 و t2 به frame خود، این کار چیزی شبیه اسکلت خانه است که بهش سایر متریال را اضافه میکنیم.
• تنظیم سایز فریم خود
• چون فعلا قصد نداریم از طرح بندی خاصی استفاده کنیم پارامتر متد setLayout را null قرار داده ایم.
• برای نمایش فریم و تمام اجزای گرافیکی باید متد setVisible را با شی ای که از کلاس JFrame ساخته ایم صدا زده و مقدار پارامتر آن را true قرار دهیم.
تا اینجا چطور بود؟ :-) در ادامه با ما همراه شید.
مثال:در برنامه زیر سه TextField و دو Buttonداریم که یکی مقادیر دو فیلد اول را با هم جمع و دیگر از هم کم میکند و نتیجه را در فیلد سوم نمایش میدهد.
Package swing_javalike ; import javax.swing.*; public class TextFieldEx implements ActionListener { TextFieldEx() { public void actionPerformed(ActionEvent e) { public static void main(String[] args) {
|
خروجی: بعد از اجرای برنامه خروجی بصورت زیر خواهد بود: تصویر(3)
• برای مثال اگر مقدار فیلد اول را 96 بگذاریم و مقدار فیلد دوم را 1300 بگذاریم و روی دکمه “+” کلیک کنی نتیجه در فیلد سوم 1396 خواهد شد: تصویر(4)
• همان طور که در تصویر(4) مشاهده میکنید TextField سوم با TextField های اول و دوم شکل متفاوتی دارد و دورش خطوط ابی رنگ و غیر قابل ویرایش است.دلیلش اینه که درهنگام کدنویسی با صدا زدن دستور مربوطه که جلوتر بهش میپردازیم گفتیم که فیلد سوم برای کاربر غیرقابل ویرایش کن!
نکته: حتما مثال های کار با گرافیک را برای خودتون در Eclipse و.. کامپایل و اجرا کنید و عملی کار کنید، چون که تئوری کار ساز نیست.
public class TextFieldEx implements ActionListener { |
• چون که قصد داریم از رویداد ها و اکشن ها استفاده کنیم و عملیات خاصی را به اجزای گرافیکی خود نسبت دهیم کلاس خود را implements به اینترفیس ActionListener میکنیم.
JtextField tf1, tf2, tf3; JButton b1, b2; |
• در اینجا سه شی از نوع کلاس JTextField تعریف کرده ایم.
• و همچنین دو شی از کلاس JButton که دکمه های ما را تشکیل میدهد تعریف کرده ایم.
TextFieldEx() { Jframe f = new Jframe(); tf1 = new JtextField(); tf1.setBounds(50, 50, 150, 20); tf2 = new JtextField(); tf2.setBounds(50, 100, 150, 20); tf3 = new JtextField(); tf3.setBounds(50, 150, 150, 20); tf3.setEditable(false); b1 = new JButton(“+”); b1.setBounds(50, 200, 50, 50); b2 = new JButton(“-“); b2.setBounds(120, 200, 50, 50); |
• در سازنده کلاس اجزای گرافیکی خود را ساخته ایم.
• ابتدا یک frame ایجاد کرده، و سپس سازنده کلاس JTextField را برای هر کدام از اشیای t1،t2و t3 صدا زده ایم.و سپس مختصات و ابعداد TextField های خود را مشخص کرده و همچنین سازنده کلاس JButton را برای اشیای b1 و b2 صدا زده ایم.و در نهایت تنظیم مختصات و ابعداد Button های خود
b1.addActionListener(this); b2.addActionListener(this); |
• همان طور که میدانید برای نسبت دادن رویداد و عملیات خاصی به یک Button با استفاده از شی ایجاد شده از کلاس JButton متد addActionListener را صدا میزنیم.
• در جلسات گذشته مستقیم از اینترفیس ActionListener درون متد addActionListener شی ایجاد کرده و دستورات خودمون که قرار بود بعد از رخ دادن یک رویداد ( یک رویداد میتواند کلیک کردن روی دکمه Button، فشردن دکمه کیبورد یا کلیک کردن با موس باشد) اجرا شوند رو درون متد actionPerformed قرار میدادیم.
• در اینجا خبری از این کار نیست یعنی بجای ایجاد مستقیم شی از اینترفیس ActionListener، کلاس خود را impelements به اینترفیس ActionListener کردیم و در بدنه کلاس خود متد actionPerformed اینترفیس ActionListener را پیاده سازی کرده و دستوراتی که قصد اجرا شدن بعد از رخ دادن هر رویدادی داریم را درون متد actionPerformed قرار میدهیم.
• از آن جهت که کلاس ما یعنی TextFieldEx را implements به اینترفیس ActionListener ،کرده ایم، میتوانیم شی ای از کلاس خود یعنی TextFieldEx را جایگزین پارامتر متد addActionListener کنیم. از طرفی بجای شی سازی از کلاسمون در این متد میتوانیم از کلمه کلیدی this استفاده کنیم.
f.add(tf1); f.add(tf2); f.add(tf3); f.add(b1); f.add(b2); f.setSize(300, 300); f.setLayout(null); f.setVisible(true); |
• در اینجا با استفاده از متد add اجزای گرافیکی خود را به frame اضافه میکنیم.
• همچنین سایز فریم خود را تعیین میکنیم.
• چون از طرح بندی خاصی نمیخوایم استفاده کنیم مقدار پارامتر setLayout را null قرار میدهیم.
• برای نمایش فریم و تمام اجزای گرافیکی مقدار پارامتر متد setVisible را true میکنیم.
public void actionPerformed(ActionEvent e) { |
• این متد رویدادهایی که رخ میدهند را دریافت میکند و بعد متناسب با رویداد رخ داده دستوری که بهش داده ایم را اجرا میکند.
• یک رویداد میتواند دکمه های کیبورد، موس و یا دکمه های درون برنامه مثل فشردن Button ها، آیتم های منوها و...باشد.
String s1 = tf1.getText(); String s2 = tf2.getText(); |
• با صدا زدن متد getText از طریق شی های کلاس JTextField متن موجود در فیلد ها دریافت میشوند.
• در اینجا متن هر کدام TextField ها درون متغیری از نوع String ریخته میشود.
• مقدار یک TextField از نوع String است حتی اگر عدد وارد آن کنیم.
int a = Integer.parseInt(s1); int b = Integer.parseInt(s2); |
***ادامه این جلسه آموزشی را به صورت پی دی اف شده در زیر دانلود کنید:
این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690