مترجم:حبیب الله علیخانی
منبع:راسخون
منبع:راسخون
2- Swing Controls
این بخش شامل کامپوننت های زیر است:Label
عنصر Label از کلاس JLabel است. کلاس JLabel به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:پروژه ای ایجاد می کنیم و کلاس JLabel را می سازیم و کد های زیر را در آن وارد می کنیم:
JLabel label = new JLabel("java SE – Rasekhoon ");
در زیر یک frame از کلاس JFrame new کردیم و یک Frame ایجاد کردیم:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Label را به frame وصل می کنیم ( یعنی Label رو در داخل frame رار می دهیم ):
frame.getContentPane( ).add(label);
frame خود را هم اندازه ی کامپوننت های داخل frame می کند , یعنی در اینجا frame را به اندازه ی Label می کند:
frame.pack( );
اما یک نکته ی مهم دیگه که باید آنرا در نظر گرفت این است که frame ایجاد شده , به صورت defualt مخفی است, و باید آنرا با دستور زیر آن را visible کنیم:
frame.setVisible(true);
خروجی آن به صورت زیر می شود:
Button
عنصر Button از کلاس JButton است. کلاس JButton به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:کلاس JButton را می سازیم و کد های زیر را در آن وارد می کنیم:
constructor های ممکن برای JButton عبارتند از :
jframe.getContentPane().add(jButton);
همان طوری که قبلا هم گفته شد JFrame را هم اندازه ی Button مورد نظر می کنیم. ( اصطلاحا آن را pack می کنیم)
خروجی آن به صورت زیر می شود:
اضافه کردن Action به دکمه:
در مثال قبل ما یک دکمه ایجاد کردیم ولی این دکمه، با کلیک بر روی آن هیچ کاری انجام نمی داد، اکنون می خواهیم یک Action را handel کنیم. زمانی که کاربر با یک کامپوننت در ارتباط باشد یک اتفاقی ممکن است رخ دهد، برنامه ی ما می تواند آمادگی رخ دادن اتفاقی را داشته باشد در صورتی که روی آن اتفاق listen کند، در واقع یعنی آماده باشه که هر وقت آن اتفاق آن را صدا کرد، کاری را انجام دهد.کلاس ActionListenerExample را می سازیم و کد های زیر را در آن وارد می کنیم:
Toggle Button
عنصر Toggle Button از کلاس JToggleButton است. کلاس JToggleButton به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:این دکمه ها دو وضعیتی هستند. مثلا برای on و off استفاده می شود.
Check Box
عنصر Check Box از کلاس JCheckBox است. کلاس JCheckBox به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:: 1 مانند JRadioButton ها فقط توانایی انتخاب شدن یک گزینه را داشته باشیم.
: 2 یا توانایی انتخاب چندین گزینه را داشته باشیم.
به JCheckedBox ها boxtick هم می گویند.
تفاوت Check Box با Radio Button در این است که در آن واحد، Check Boxمی توانند هر چند تا انتخاب شوند اما Radio Button باید یکی انتخاب شود.
کلاس JCheckBoxExample را می سازیم و کد های زیر را در آن وارد می کنیم:
در مثال قبل ما با ActionListener آشنا شدیم که یک Action به دکمه اضافه می کرد اما Action های JCheckedBox از نوع ItemListener هستند. همچنین نام تابعی که action را handel می کند itemStateChanged هست :
در پایان خروجی به صورت زیر می باشد :
Radio Button
عنصر Radio Button از کلاس JRadioButton است. کلاس JRadioButton به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:Button Group
عنصر Button Group از کلاس ButtonGroup است. کلاس ButtonGroup به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:یک Button Group به نام Button Group1 ، در فرم ایجاد می کنیم. سپس چند Radio Button مورد نظر را انتخاب کرده و در پنجره ی Properties ، خاصیت Button Group آن را به Button Group1 می دهیم.
Combo Box
عنصر Combo Box از کلاس JComboBox است. کلاس JComboBox به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:List
عنصر List از کلاس JList است. کلاس JList به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:در خط 9 تا 11 ، JList در constructor خود آرایه ای از string ها را به عنوان پارامتر هایش در یافت می کند. به نحوه ی تعریف شدن ListSelectionListener در برنامه دقت کنید.
خروجی به صورت زیر می باشد:
Text Field
عنصر Text Field از کلاس JTextField است. کلاس JTextField به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:کد:
JTextField firstField = new JTextField(20);
روش فوق نحوه ی ایجاد یک textfield است با مقدار اولیه 20 که تعداد کارکتر های داخل آن را مشخص می کند.
معرفی متد های textField :
JTextField(width) : این همان constructor تابع است که از آن new می کنیم.setText(text): مقدار text را در داخل textfield قرار می دهد.
String getText(): مقدار داخل textField را می خواند.
:addActionListener(listener) یک اکشن به textfield اضافه می کنیم.
setEditable(true/false): این متد به ما می گوید که آیا می خواهیم textfield ما قابل edit باشد یا نه.
setFont(font): با این متد می توانیم فونت استفاده شده در داخل textfield را تعریف کنیم.
مثال این بخش درست مثل مثال بخش Label است. کافیست جای تعریف JLabel , JTextField که در این بخش معرفی شد را جایگزین کنیم.
Text Area
عنصر TextArea از کلاس JTextArea است. کلاس JTextArea به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:کلاس JTextAreaExample را می سازیم و کد های زیر را در آن وارد می کنیم:
خط 21-28 دکمه ای که در صفحه قرار دارد و بعد از کلیک بر روی آن متنی را که در صفحه وارد کردیم را به وسیله ی متد getText() می گیرد و در خروجی output آن را نمایش می دهد.
خروجی به صورت زیر می باشد( هم فرم هم output):
Scroll Bar
عنصر Scroll Bar از کلاس JScrollBar است. کلاس JScrollBar به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:Slider
عنصر Slider از کلاس JSlider است. کلاس JSlider به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:کلاس JSliderExample را می سازیم و کد های زیر را در آن وارد می کنیم:
JSlider() : یک slider عمودی با رنج 0 تا 100 و مقدار اولیه ی 50 ایجاد می کند.
JSlider(BoundedRangeModel model) : یک slider عمودی با استفاده از BoundedRangeModel ایجاد می کند.
JSlider(int orientation) : یک slider در orientation خاص، با رنج 0 تا 100 و مقدار اولیه ی 50 ایجاد می کند.
JSlider(int min, int max) : یک slider عمودی با استفاده از min و max (حداقل و حداکثر) معین ومقدار اولیه بین min و max ایجاد می کند.
JSlider(int min, int max, int value) : یک slider عمودی با استفاده از min و max (حداقل و حداکثر) معین ومقدار اولیه ایجاد می کند.
JSlider(int orientation, int min, int max, int value) : یک slider عمودی در orientation خاص، با استفاده از min و max (حداقل و حداکثر) معین ومقدار اولیه ایجاد می کند.
خروجی به صورت زیر می باشد:
Progress Bar
عنصر Progess Bar از کلاس JProgressBar است. کلاس JProgressBar به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:Formatted Field
عنصر Formatted Field از کلاس JFormattedTextField است. کلاس JFormattedTextField به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:کد زیر راوارد می کنیم:
یا برای اینکه فقط تاریخ را بپذیرد از کلاس Date استفاده می کنیم. درکد زیر می بینید که در سازنده ی کلاس آبجکت Date با نام i تعریف کردیم که آن را به Value شی JFormattedTextField پاس می دهیم. درگذشته آموختید که کلاس سازنده هم نام کلاس اصلی است و برای مقدار دهی بکار می رود.
Password field
عنصر Password Field از کلاس JPasswordField است. کلاس JPasswordField به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:کلاس JPasswordFieldExample را می سازیم و کد های زیر را در آن وارد می کنیم:
سپس خروجی به صورت زیر می باشد: (دقت کنید زمانیکه پسورد را وارد می کنید، در پنجره ی output مقدار آن نشان داده می شود مثلا در اینجا 123 را وارد کردیم)
Spinner
عنصر Spinner از کلاس JSpinner است. کلاس JSpinner به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:JSpinner ها به کاربر اجازه می دهد که در بین چندین مقادیر فقط یکی را انتخاب کند. در هر بار فقط یک مقدار انتخاب می شود و کاربر با بالا پایین کردن می تواند آنرا تغییر دهد.
کلاس JSpinnerExample را می سازیم و کد های زیر را در آن وارد می کنیم:
در خط 13 constructor تابع SpinnerListModel به وسیله ی آرایه از string ها (آرایه ی size) فراخوانی شده است ( از این طریق یک لیست از مقدار اولیه برایSpinner درست می کنیم )
در خط 15 constructor ،JSpinner را با لیستی که قبلا توسط SpinnerListModel آماده کرده بودیم (لیستی به نام model) مقدار دهی می کنیم.
سپس خروجی به صورت زیر می باشد(با انتخاب هر کدام در پنجره ی output مقدار آن نشان داده می شود):
Separator
عنصر Separator از کلاس JSeperator است. کلاس JSeperator به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:Text Pane
عنصر Text Pane از کلاس JTextPane است. کلاس JTextPane به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:Editor Pane
عنصر Editor Pane از کلاس JEditorPane است. کلاس JEditorPane به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:Tree
عنصر Tree از کلاس JTree است. کلاس JTree به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:در پنجره ی Properties در خاصیت Model آن می توان مقادیر این ساختار درختی را تعیین کرد:
Table
عنصر Table از کلاس JTable است. کلاس JTable به صورت شکل زیر از کلاسهای دیگر ارث بری کرده است:استفاده از مطالب این مقاله با ذکر منبع راسخون بلامانع می باشد.
/ج