خلاصه مطلب
JTextField در جاوا یکی از کلاس های موجود در کتابخانه Swing در جاوا است که به صورت ساده آن را به شما آموزش داده ایم.
فهرست جلسات آموزش گرافیک در جاوا
جلسه اول | معرفی Swing در جاوا
جلسه دوم | کلاس JButton در جاوا
جلسه سوم | کلاس JLabel در جاوا
جلسه چهارم | کلاس JTextField درجاوا
جلسه پنجم | کلاس JTextArea در جاوا
جلسه ششم | کلاس JPasswordField در جاوا
جلسه هفتم | کلاس JCheckBox در جاوا
جلسه هشتم | کلاس JRadioButton در جاوا
جلسه نهم | کلاس JComboBox در جاوا
جلسه دهم | کلاس JTabel در جاوا
جلسه یازدهم | کلاس JOptionPane در جاوا
جلسه دوازدهم | ساخت منو گرافیکی در جاوا
جلسه سیزدهم | کلاس JPopupMenu در جاوا
جلسه چهاردهم | کلاس JSeparator در جاوا
جلسه پانزدهم | کلاس JProgressBar در جاوا
جلسه شانزدهم | کلاس JTree در جاوا
جلسه هفدهم | کلاس JColorChooser
جلسه هجدهم | کلاس JSlider در جاوا
جلسه نوزدهم | کلاس JSpinner در جاوا
جلسه بیستم | کلاس JPanel در جاوا
جلسه بیست و یکم | کلاس JFileChooser در جاوا
جلسه بیست و دوم | کلاس JLayeredPane در جاوا
جلسه بیست و سوم | استفاده از ToolTip در جاوا
جلسه بیست و چهارم |تغییر آیکون Frame در جاوا
جلسه بیست و پنجم | کلاس Graphics در جاوا
جلسه بیست و ششم | نمایش تصویر در Swing

♨️ جلسه چهارم - کلاس JTextField در جاوا
کلاس JTextField اجزای گرافیکی "متنی" است که با شی ساختن از آن به شما اجازه می دهد یک خط متن را ویرایش کنید.برای تصوری بهتر از این اجزای گرافیکی برنامه Notepad را باز می کنیم و از منو Edit گزینه Find را انتخاب می کنیم:تصویر(1)
.png)
در تصویر(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 :
.png)
مثال:
| 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); } } |
.png)
خروجی: تصویر(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.*; import java.awt.event.*;public class TextFieldEx implements ActionListener { JtextField tf1, tf2, tf3; JButton b1, b2; 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); b1.addActionListener(this); b2.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); } public void actionPerformed(ActionEvent e) { String s1 = tf1.getText(); String s2 = tf2.getText(); int a = Integer.parseInt(s1); int b = Integer.parseInt(s2); int c = 0; if (e.getSource() == b1) { c = a + b; } else if (e.getSource() == b2) { c = a – b; } String result = String.valueOf(c); tf3.setText(result); } public static void main(String[] args) { new TextFieldEx(); } } |
خروجی: بعد از اجرای برنامه خروجی بصورت زیر خواهد بود: تصویر(3)
(2).png)
• برای مثال اگر مقدار فیلد اول را 96 بگذاریم و مقدار فیلد دوم را 1300 بگذاریم و روی دکمه “+” کلیک کنی نتیجه در فیلد سوم 1396 خواهد شد: تصویر(4)
(2).png)
• همان طور که در تصویر(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 شده) در لینک زیر دریافت کنید.این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)لینک دانلود
.png)
.png)

