السلام عليكم ورحمة الله وبركاتةالدرس الاول .. Java Swing >> خصوصا لطلاب الحاسوب جامعه الجزيرة .. لا ن معهم اختبار .. واالباقي بالطريق ان شاء الله .. وهي من الدروس القليله العربي ...
هي الـ Swing
هي مكتبة لأدوات الوجهه الرسوميه ( مثل : الأزرار , مربعات النص … ) تختصر إلى GUI و هي من إنتاج Sun Microsystems , تكون مضمنه مع الـ Java بأسم Swing .
من المزايا الرئيسيه فيها :
- .متعددت المنصات , أي تعمل على أي بيئة تشغيل
- قابله للتعديل
- قابليه للتجديد
- خفيفة
وتتضمن الحزم التاليه :
- javax.swing
- javax.swing.border
- javax.swing.colorchooser
- javax.swing.event
- javax.swing.filechooser
- javax.swing.plaf
- javax.swing.plaf.basic
- javax.swing.plaf.metal
- javax.swing.plaf.multi
- javax.swing.plaf.synth
- javax.swing.table
- javax.swing.text
- javax.swing.text.html
- javax.swing.text.html.parser
- javax.swing.text.rtf
- javax.swing.tree
- javax.swing.undo
تتميز Swing بأنها غنيه بالـ widget الأساسيه مثل الـ Botton و الـ Label و TextBox , و أيضا مثل الـ Tree و الـ Tables , وهي مكتوبه كلها بالـ Java , كما أنها جزء من الـ JFC , تم إنشائها لتكون سمه متكامله لبرامج سطح المكتب .
الـ JFC تتضمن أيضاً الـ AWT , فهذا جعل هناك إمكانية التعامل مع الـ Java 2D و الإسقاط Drag and Drop.
تم تصميمها في عام 1997 مع الـ JDK الإصدار 1.2 بصوره متكامله تماماً . منصة Java تحتوي على مكتبات ثنائية الأبعاد 2D مما يُمكن المبرمجين من التعامل مع الرسم و التصوير الثنائي الأبعاد , وهناك نوعين من الـ Widget الهامه للتعامل مع هذا الخاصيه وهم :
- الأدوات الخفيفه - Lightweight
- الأدوات الثقيله - Heavyweight
الأدوات الثقيله ( Heavyweight ) تعتمد على الـ API الخاصة بنظام التشغيل لرسم الأدوات الخاصه بها ( widget ) , مثل الـ Borland VCL فهي من الأدوات الثقيله لأنها تعتمد على
الـ Win32 API المدموجه مع وجهة البرامج في وندوز , في Unix و Linux هناك أدوات الـ +GTK التي تكون مبنيه في الأساس على مكتبة X11 , و Swing هو بديل الـ GTK و أيضاً بأدوات خفيفة و له تأثير جمالي على الـ widget .
مكتبة SWT
هي أيضاً مكتبه للـ GUI في لغة الـ Java , وتسمى SWT . تم برمجتها في شركة IBM و الأن هي مشروع مفتوح المصدر , مدعمه من IBM , تعتبر الـ SWT مثال للأدوات الثقيله ( Heavyweight ) , وتسمح بإستغلال أساس نظام التشغيل لعمل وجهه رسوميه GUI , وتقوم بإنشائها بإستخدام الوجهه الأصليه للـ Java , من مُمَيزاتها السرعه و التأثيرات الجميله التي يُطلق عليها أسم الـ Look and Feel , و من سلبياتها كثرة أحتمالات الأخطاء بها و أقل كفاءه من الـ Swing , و الـ SWT تماماً مثل مكتبة Windows Centric .
البرنامج الأول بالـ Java Swing
سنبدء الأن في هذا الجزء ببرمجة أول برنامج لنا بإستخدام أداة الـ Swing , وسيكون برنامج بسيط جداً , لكنه سيُغطي أساسيات هامه .
برنامجنا الأول
في هذا البرنامج سنقوم بتصميم نافذه Window عاديه جداً ولكن أساسيه
import javax.swing.JFrame; public class Simple extends JFrame { public Simple() { setSize(300, 200); setTitle("Simple"); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { Simple simple = new Simple(); simple.setVisible(true); } }
كما نرى مجموعة بسيطه وسهله من الأكواد أنشأت لنا نافذه مثل أي نافذه نستخدمها في البرامج العاديه تماماً , فبإمكانك بهذا التطبيق الصغير تكبير أو تصغير النافذه , ربما بعد ذالك نزيد من التعقيد في الكود ولكن هذا يعتمد على ذكاء المُبرمج .
import javax.swing.JFrame;
هنا قمنا بضم Widget أسمها Jframe , وهي تقوم بعمل إطار من نوع TOPLEVEL , أي يُمكن توضيفها مع Widget أخرى .
setSize(300, 200); setTitle("Simple");
السطر الأول نقوم بتحديد مساحة النافذه بـ 300 pix عرض و 200 pix طول . السطر الثاني نقوم بوضع عنوان للنافذه .
setDefaultCloseOperation(EXIT_ON_CLOSE);
هذا الـ method ستقوم بإغلاق النافذه إذا تم الضغط على زر الإغلاق x , وهذه تكون الصوره الإفتراضية , وما بين القوسين أي يقوم بتنفيذ عملية الخروج دون إحداث أي شيء .
توسيط النافذه في منتصف الشاشة
بصوره إفتراضيه , عندما تظهر النافذه على الشاشه , لا تكون في المنتصف , بل ستظهر في أعلى اليسار في الزاويه .
الكود التالي سيقوم بإظهر النافذه في منتصف الشاشه .
import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; public class CenterOnScreen extends JFrame { public CenterOnScreen() { setSize(300, 200); setTitle("CenterOnScreen"); setDefaultCloseOperation(EXIT_ON_CLOSE); Toolkit toolkit = getToolkit(); Dimension size = toolkit.getScreenSize(); setLocation(size.width/2 - getWidth()/2, size.height/2 - getHeight()/2); } public static void main(String[] args) { CenterOnScreen cos = new CenterOnScreen(); cos.setVisible(true); } }
لجعل النافذه في المنتصف فيجب علينا تحديد الـ Resolution في الشاشه , ولهذا أستخدمنا الكلاس Toolkit .
Toolkit toolkit = getToolkit(); Dimension size = toolkit.getScreenSize();
هنا أحضرنا رقم المقاس الخاص بالشاشه .
setLocation(size.width/2 - getWidth()/2, size.height/2 - getHeight()/2);
لتحديد مكان النافذه على الشاشه , نستخدم الـ method التي أسمها setLocation
الأزرار - Buttons
في هذا المثال سنقوم بإنشاء زرين , الزر الأول يقوم بإصدار صوت , والزر الثاني يقوم بإغلاق البرنامج .
import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Buttons extends JFrame { private Toolkit toolkit; public Buttons() { setTitle("Buttons"); setSize(300, 200); toolkit = getToolkit(); Dimension size = toolkit.getScreenSize(); setLocation((size.width - getWidth())/2, (size.height - getHeight())/2); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); getContentPane().add(panel); panel.setLayout(null); JButton beep = new JButton("Beep"); beep.setBounds(150, 60, 80, 30); beep.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { toolkit.beep(); } }); JButton close = new JButton("Close"); close.setBounds(50, 60, 80, 30); close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); panel.add(beep); panel.add(close); } public static void main(String[] args) { Buttons buttons = new Buttons(); buttons.setVisible(true); } }
في هذا المثال سنتعرف على نقطتين مهمين , وهم إدارة النماذج ( Layout Management ) و معالجة الأحداث ( Event Handling ) , وسنتحدث عنه بإختصار ,لأن كل من هذه الخواص لها فصل كامل .
JPanel panel = new JPanel(); getContentPane().add(panel);
قمنا بإنشاء عنصر Jpanel , وهو حاويه ( Container ) من الأدوات خفيفة الوزن ( lightweight ) , بعد هذا قمنا بإضافة العنصر Jpanel في العنصر Jframe .
panel.setLayout(null);
يمتلك العنصر Jpanel القدره على إدارة النماذج الإنسيابيه ( FlowLayout ) , فهي مسؤله عن تحديد مكان الـ Widget في الحاويه ( Container ) , فإذا قمنا بطلب setLayout(null( فهذا سيُمكنا من تحديد مكان العنصر الخاص بنا , ولهذا قمنا بإستخدام الMethod التي أسمها setBounds . ملاحظة : قم بمحاولة إلغاء الـ setLayout مره و setBounds مره أخرى حتى تعرف الغرض منهم .
JButton beep = new JButton("Beep"); beep.setBounds(150, 60, 80, 30); beep.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { toolkit.beep(); } });
هنا قمنى بإنشاء أول زر , وقمنا بتحديد مكانه عن طريق الـ setBounds Method , وقمنا بعدها بإنشاء حدث Listener , فعند الضغط على الزر فسيتم تنفيذ الـ ActionEvent و في مثلنا هذا سيقوم الزر بإصدار صوت Beep.
System.exit(0);
زر الخروج سنخرج به من البرنامج تماماً , لهذا قمبنا بإستدعاء الـ Method الذي أسمه System.exit .
panel.add(beep); panel.add(close);
لطلب عرض الأزرار , فيجب علينا وضعها في الـ Panel السابق إنشائها .
التعامل مع الـ tooltip
أداة الـ Tooltip جزء من أجزاء البرامج الداخليه في النظام , الـ Swing تقوم بعرض مستطيل صغير إذا مر مؤشر الفأره على Object .
import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Tooltip extends JFrame { private Toolkit toolkit; public Tooltip() { setTitle("Tooltip"); setSize(300, 200); toolkit = getToolkit(); Dimension size = toolkit.getScreenSize(); setLocation((size.width - getWidth())/2, (size.height - getHeight())/2); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); getContentPane().add(panel); panel.setLayout(null); panel.setToolTipText("A Panel container"); JButton button = new JButton("Button"); button.setBounds(100, 60, 80, 30); button.setToolTipText("A button component"); panel.add(button); } public static void main(String[] args) { Tooltip tooltip = new Tooltip(); tooltip.setVisible(true); } }
قمنا بإضافة خاصية الـ Tooltip لكل من الزر و الـ Panel , في هذا السطر
panel.setToolTipText("A Panel container");
فلتفعيل هذا الخاصيه نقوم بإستدعاء الـ Method الذي أسمه setTooltipText().
القوائم و شريط الأدوات في Java Swing
طريقة إنشاء شريط الأدوات (Menubar)
يعتبر الـ Menubar من أكثر الأدوات الواضحة دائماً للمستخدم في البرامج التي تعتمد على الوجهة الرسومية (GUI). يتكون من مجموعة من الأوامر التي يتم تنفيذا سواء بالنقر عليها أو بطلبها عبر لوحة المفاتيح , وهناك معاير يُكتب بها الكود لتجنب الغموض و البس أثناء إستدعاء هذا الأوامر لتنفيذ مهمه معينه .
لإستخدام الـ Menu في الـ Java Swing , هناك إستدعاء لثالث كائنات Object وهم Jmenu , Jmenubar , JmenuItem .
إنشاء Menu بسيط
سنبدء بإنشاء Menu بسيط جداً وسهل
package com.zetcode; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class Menu extends JFrame { public Menu() { setTitle("JMenuBar"); JMenuBar menubar = new JMenuBar(); ImageIcon icon = new ImageIcon("exit.png"); JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F); JMenuItem fileClose = new JMenuItem("Close", icon); fileClose.setMnemonic(KeyEvent.VK_C); fileClose.setToolTipText("Exit application"); fileClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); file.add(fileClose); menubar.add(file); setJMenuBar(menubar); setSize(250, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Menu(); } }
في هذا المثال قمنا بإنشاء Menu تحتوي على عنصر واحد , وإختيار العنصر Close سيتم من خلاله إغلاق البرنامج تماماً .
JMenuBar menubar = new JMenuBar();
هنا قمنا بإنشاء Menubar
ImageIcon icon = new ImageIcon("exit.png");
قمنا بوضع icon للعنصر Close
JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F);
قمنا هنا بإنشاء الـ Menu و جعلنا هناك إمكانية الوصول لها من خلال لوحة المفاتيح , وربطناها بمفتاح مخصص بإستخدام Menthod أسمها setMnemonic , فبهذا تمكنا من الوصول إلى هذه الـMenu بالضغط على Alt + F
fileClose.setToolTipText("Exit application");
وهذا السطر يُمكنا من عمل Tooltip لعنصر الإغلاق Close .
القوائم الفرعية – Submenu
من الممكن إنشاء قوائم فرعية للقائمة الواحده , مما يُشكل مجموعة إلى مجموعات , مثلا ً, بإمكاننا وضع أوامر في القائمة وظيفتها تقوم بإخفاء و إضهار البار الشخصي على البرنامج أو شريط الحالة أو بار العناوين في برامج تصفح الإنترنت , وكل هذا عن طريق قائمة فرعيه تسمى Toolbars متفرعه من قائمه فرعيه . وبإمكاننا أيضاً عمل الفواصل في القوائم , فهو عباره عن خط بسيط يفصل عنصر عن عنصر , كثيراً ما نراه في البرامج بين الحفظ و الفتح و بين الطباعه و معاينة الطباعة , أيضاً بإمكاننا تنفيذ أوامر القائمه عن طريق لوحة المفاتيح .
البرنامج التالي إضافة على السابق في زيادة عدد العناصر و عمل فاصل بالإضافة إلى قائمة فرعية و إختصار سريع للبرنامج.
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; public class Submenu extends JFrame { public Submenu() { setTitle("Submenu"); JMenuBar menubar = new JMenuBar(); ImageIcon iconNew = new ImageIcon("new.png"); ImageIcon iconOpen = new ImageIcon("open.png"); ImageIcon iconSave = new ImageIcon("save.png"); ImageIcon iconClose = new ImageIcon("exit.png"); JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F); JMenu imp = new JMenu("Import"); imp.setMnemonic(KeyEvent.VK_M); JMenuItem newsf = new JMenuItem("Import newsfeed list..."); JMenuItem bookm = new JMenuItem("Import bookmarks..."); JMenuItem mail = new JMenuItem("Import mail..."); imp.add(newsf); imp.add(bookm); imp.add(mail); JMenuItem fileNew = new JMenuItem("New", iconNew); fileNew.setMnemonic(KeyEvent.VK_N); JMenuItem fileOpen = new JMenuItem("Open", iconOpen); fileNew.setMnemonic(KeyEvent.VK_O); JMenuItem fileSave = new JMenuItem("Save", iconSave); fileSave.setMnemonic(KeyEvent.VK_S); JMenuItem fileClose = new JMenuItem("Close", iconClose); fileClose.setMnemonic(KeyEvent.VK_C); fileClose.setToolTipText("Exit application"); fileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); fileClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); file.add(fileNew); file.add(fileOpen); file.add(fileSave); file.addSeparator(); file.add(imp); file.addSeparator(); file.add(fileClose); menubar.add(file); setJMenuBar(menubar); setSize(360, 250); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Submenu(); } }
نأتي الأن للشرح ….
JMenu imp = new JMenu("Import"); ... file.add(imp);
إنشاء قائمة فرعيه مثلها مثل إنشاء القائمه العاديه , تُنشأ بنفس الطريقة ثما نقوم بوضعها في القائمة الأساسيه .
fileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK));
هنا قمنا بئنشاء الإختصار المطلوب عمله للبرنامج , فقد قمنا بإختيار الإختصار Ctrl + W لإغلاق البرنامج .
file.addSeparator();
قمنا هنا بإنشاء فاصل أفقي , وهذا لجعل القائمة عباره عن مجموعات منفصله و مرتبه بشكل منطقي و يُسهل التعامل معاها .
JCheckBoxMenuItem
في هذا المثال سنتعلم كيفية إنشاء عنصر CheckMark على الـ Menu القائمه فعند الضغط عليها يضهر علامة الصح على العنصر , و الضغط عليها مره أخرى يقوم بإلغاء العلامه من العنصر , و من الممكن تحميلها بنص أو أيكونه Icon ,أو الإثنين معاً على حسب إختيارك أنت .
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.BorderFactory; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.UIManager; import javax.swing.border.EtchedBorder; public class CheckMenuItem extends JFrame { private JLabel statusbar; public CheckMenuItem() { setTitle("CheckBoxMenuItem"); JMenuBar menubar = new JMenuBar(); JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F); JMenu view = new JMenu("View"); view.setMnemonic(KeyEvent.VK_V); JCheckBoxMenuItem sbar = new JCheckBoxMenuItem("Show StatuBar"); sbar.setState(true); sbar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if (statusbar.isVisible()) { statusbar.setVisible(false); } else { statusbar.setVisible(true); } } }); view.add(sbar); menubar.add(file); menubar.add(view); setJMenuBar(menubar); statusbar = new JLabel(" Statusbar"); statusbar.setBorder(BorderFactory.createEtchedBorder( EtchedBorder.RAISED)); add(statusbar, BorderLayout.SOUTH); setSize(360, 250); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new CheckMenuItem(); } }
في هذا المثال قمنا بإنشاء قائمه تحتوي على CheckBoxMenuItem , عند الضغط عليها يختفي شريط الحالة و الضغط عليها مره أخرى يُظهر الشريط مره أخرى .
JCheckBoxMenuItem sbar = new JCheckBoxMenuItem("Show StatuBar"); sbar.setState(true);
هنا قمنى بإنشاء الأداه JcheckBoxMenuItem بالإضافة إلى عنوان العنصر , و قمنا بتحديد الحاله الإفتراضية True أي أن شريط الحالة في حالة ظهور .
if (statusbar.isVisible()) { statusbar.setVisible(false); } else { statusbar.setVisible(true); }
الذي قمنا به هنا هو تحديد هل شريط الحاله في حالة ظهور أم لا عن طريق الـ Method الذي أسمه isVisible , فإذا كان العائد هو القيمه True فتصبح حالة الظهور False و إذا عاد الـ Method بالقيمه False فتكون الحاله True.
statusbar = new JLabel(" Statusbar"); statusbar.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
شريط الحاله هنا مجرد عنصر Jlabel عادي , فقمنا بإنشائه و تسميته Statusbar , فالسطر الثاني قمنا بعمل إطار بارز حوله , في السطر الثالث قمنا بتحديد مكان شريط الحاله .
قوائم الـ popup
هناك نوع أخر من القوائم وهو الـ Popup , و تسمى أيضاً Context , دائماً ما نُشاهدها عند الضغط بالزر الأيمن على أحد العناصر , فكرتها هي تزويد المستخدم بالتحكم في العنصر المحدد , مثلاً الصور عند الضغط عليها نحصل على قائمه Context تحتوي على حفظ , دوران , تحريك ….. إلخ .
في المثال التالي سنحصل على قائمه صغيره صغيره تحتوي على عنصرين الأول يقوم بإصدار صوت من الجهاز و الثاني يقوم بإغلاق البرنامج .
import java.awt.Toolkit; import javax.swing.*; import java.awt.event.*; public class PopupMenu { private JPopupMenu menu; private Toolkit toolkit; public PopupMenu(){ JFrame frame = new JFrame("JPopupMenu"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); toolkit = frame.getToolkit(); menu = new JPopupMenu(); JMenuItem menuItemBeep = new JMenuItem("Beep"); menuItemBeep.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { toolkit.beep(); } }); menu.add(menuItemBeep); JMenuItem menuItemClose = new JMenuItem("Close"); menuItemClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); menu.add(menuItemClose); frame.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.getButton() == e.BUTTON3) { menu.show(e.getComponent(), e.getX(), e.getY()); } } }); frame.setSize(250, 200); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { new PopupMenu(); } }
بالطبع يُمكن معاملتها معاملة القوائم Menu العاديه , حيث يُمكن إنشاء صور و فواصل و قوائم فرعيه أخره لها .
menu = new JPopupMenu();
قمنا هنا بإنشاء الـ Popup , من الـ Class الذي أسمه JpopupMenu.
JMenuItem menuItemBeep = new JMenuItem("Beep");
هذا عنصر من عناصر الـ Popup قمنا بإنشائه , وهو تماماً مثل الـ menu العاديه .
frame.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.getButton() == e.BUTTON3) { menu.show(e.getComponent(), e.getX(), e.getY()); } } });
قمنا هنا بإنشاء حدث ظهور القائمه Popup عن الضغط على زر Button3 على الفأره , وسيتم الظهور في نفس مكان الضغط .
JToolbar
بعد التطرق إلى القوائم و عرفة كيفية إنشائها , نأتي الأن إلى شريط الأدوات ToolBar حيث أنه يوفر الوقت و البحث عن عنصر أو أمر معين يكثر أستخدامه , وتوفر لنا لغة Java في مكتبة Swing الأداه Jtoolbar حيث يتم إنشاء شريط الأدوات عن طريقها .
سنقوم الأن بإنشاء شريط أدوات يحتوي على زر واحد للخروج
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JToolBar; public class SimpleToolbar extends JFrame { public SimpleToolbar() { setTitle("SimpleToolbar"); JMenuBar menubar = new JMenuBar(); JMenu file = new JMenu("File"); menubar.add(file); setJMenuBar(menubar); JToolBar toolbar = new JToolBar(); ImageIcon icon = new ImageIcon(getClass().getResource("exit.png")); JButton exit = new JButton(icon); toolbar.add(exit); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); add(toolbar, BorderLayout.NORTH); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new SimpleToolbar(); } }
نأتي للشرح
JToolBar toolbar = new JToolBar();
هذه طريقة إنشاء الـ Toolbar , وهي تُشبه طريقة إنشاء أي عنصر
JButton exit = new JButton(icon); toolbar.add(exit);
قمنا بإنشاء زر و أضفناه إلى الـ Toolbar الذي قمنا بإنشائه .
ليست هناك تعليقات:
إرسال تعليق