الجامعات العربية

طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane

طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane
طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane
طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane
طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane
طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane
المناهج السعودية

طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane
المثال التالي يعلمك طريقة إضافة زر إغلاق لكل Tab يتم إضافتها في الـ Tabbed Pane.سنقوم ببناء كلاس خاص لإضافة زر إغلاق لكل Tab موجود بداخل الـ Tabbed Pane.

مثال

SpecialTab.java

  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.FlowLayout;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import javax.swing.BorderFactory;
  7. import javax.swing.JButton;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. import javax.swing.JTabbedPane;
  11. import javax.swing.plaf.basic.BasicButtonUI;
  12.  
  13. publicclass SpecialTab extends JPanel {
  14.  
  15. privatefinal JTabbedPane tabbedPane;
  16.  
  17. publicSpecialTab(final JTabbedPane tabbedPane){
  18.  
  19. // تترب من اليسار لليمين و أزلنا أي هوامش لا حاجة لها Tab هنا جعلنا الأشياء التي ستظهر في الـ
  20. super(newFlowLayout(FlowLayout.LEFT00));
  21.  
  22. // فارغاً tabbedPane سيتم رمي إستثناء في حال كان الـ
  23. if(tabbedPane == null){
  24. thrownewNullPointerException(“TabbedPane is null”);
  25. }
  26. this.tabbedPane = tabbedPane;
  27.  
  28. // مفتوح Tab هنا قمنا بتحسين لون الخلفية الذي يظهر على الـ
  29. setOpaque(false);
  30.  
  31. // label و تحويله إلى Panel هنا سيتم قراءة عنوان الـ
  32. JLabel label = newJLabel(){
  33. @Override
  34. public String getText(){
  35. int i = tabbedPane.indexOfTabComponent(SpecialTab.this);
  36. if(i != –1)
  37. return tabbedPane.getTitleAt(i);
  38. returnnull;
  39. }
  40. };
  41.  
  42. // Tab في الـ label بعدها سيتم وضع الـ
  43. add(label);
  44.  
  45. // 5px بعدها سيتم إزالة أي حدود موضوعة له و إضافة هامش بنسبة
  46. label.setBorder(BorderFactory.createEmptyBorder(0005));
  47.  
  48. // بعدها سيتم تعريف زر الخروج الذي سيظهر بجانب العنوان
  49. JButton button = newCloseButton();
  50. add(button);
  51.  
  52. // هنا قمنا بإضافة بعض الهامش ناحية اليسار قبل زر الخروج
  53. setBorder(BorderFactory.createEmptyBorder(3000));
  54. }
  55.  
  56.  
  57. privateclass CloseButton extends JButton implements ActionListener {
  58.  
  59. publicCloseButton(){
  60. int size = 15;
  61. setPreferredSize(newDimension(size, size));
  62. setText(“×”);
  63. setForeground(Color.white);
  64. setToolTipText(“close this tab”);
  65.  
  66. setBackground(newColor(2544646));
  67. setContentAreaFilled(true);
  68.  
  69. setFocusable(false);
  70. setBorder(BorderFactory.createEtchedBorder());
  71. setBorderPainted(true);
  72.  
  73. setUI(newBasicButtonUI());
  74.  
  75. addActionListener(this);
  76. }
  77.  
  78. @Override
  79. publicvoidactionPerformed(ActionEvent e){
  80. int i = tabbedPane.indexOfTabComponent(SpecialTab.this);
  81. if(i != –1)
  82. tabbedPane.remove(i);
  83. }
  84.  
  85. @Override
  86. publicvoidupdateUI(){}
  87.  
  88. }
  89.  
  90. }

Main.java

  1. import javax.swing.JFrame;
  2. import javax.swing.JPanel;
  3. import javax.swing.JTabbedPane;
  4. import java.awt.Color;
  5.  
  6. publicclass Main {
  7.  
  8. publicstaticvoidmain(String[] args){
  9.  
  10. // هنا قمنا بإنشاء النافذة مع تحديد بعض خصائصها
  11. JFrame frame = newJFrame(“JTabbedPane demo”)// أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
  12. frame.setSize(420300)// هنا قمنا بتحديد حجم النافذة. عرضها 420 و طولها 300
  13. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)// هنا جعلنا زر الخروج من النافذة يغلق البرنامج
  14. frame.setLayout(null)// في النافذة بنفسنا Tabbed Pane لذلك سنقوم بتحديد مكان الـ Layout Manager أي لم نستخدم أي null هنا وضعنا
  15.  
  16. // Panels هنا قمنا بتعريف خمسة
  17. JPanel panel_1 = newJPanel();
  18. JPanel panel_2 = newJPanel();
  19. JPanel panel_3 = newJPanel();
  20. JPanel panel_4 = newJPanel();
  21. JPanel panel_5 = newJPanel();
  22.  
  23. // منهم Panel هنا قمنا بإعطاء لون خلفية لكل
  24. panel_1.setBackground(Color.white);
  25. panel_2.setBackground(Color.cyan);
  26. panel_3.setBackground(Color.yellow);
  27. panel_4.setBackground(Color.green);
  28. panel_5.setBackground(Color.red);
  29.  
  30. // عند الحاجة Scroll Bar و جعله يضيف Tabs و تحديد مكان ظهور الـ Frame مع تحديد موقعه و حجمه في الـ Tabbed Pane هنا قمنا بتعريف
  31. JTabbedPane tabbedPane = newJTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
  32. tabbedPane.setBounds(5030300200);
  33.  
  34. // منهم فيه Panel مع تحديد عنوان كل Tabbed Pane في الـ Panels هنا وضعنا جميع الـ
  35. tabbedPane.addTab(“Tab 1”, panel_1);
  36. tabbedPane.addTab(“Tab 2”, panel_2);
  37. tabbedPane.addTab(“Tab 3”, panel_3);
  38. tabbedPane.addTab(“Tab 4”, panel_4);
  39. tabbedPane.addTab(“Tab 5”, panel_5);
  40.  
  41. // حتى يتم إضافة زر للخروج لكل واحد منهم SpecialTab إلى tabbedPane الموجودة بداخل الـ Tabs هنا أنشأنا حلقة تقوم بتحويل جميع الـ
  42. for(int i=0; i<tabbedPane.getTabCount(); i++)
  43. tabbedPane.setTabComponentAt(i, newSpecialTab(tabbedPane));
  44.  
  45. // Frame في الـ Tabbed Pane هنا أضفنا الـ
  46. frame.add(tabbedPane);
  47.  
  48. // مرئية Frame هنا جعلنا الـ
  49. frame.setVisible(true);
  50.  
  51. }
  52.  
  53. }

ستظهر لك النافذة التالية عند التشغيل.

طريقة إضافة زر إغلاق لكل tab في جافا

المصدر: طريقة إضافة زر إغلاق لكل tab في الـ JTabbedPane – المناهج السعودية

مقالات ذات صلة

اترك رد

زر الذهاب إلى الأعلى

أنت تستخدم إضافة Adblock

برجاء دعمنا عن طريق تعطيل إضافة Adblock