الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعمال GridBaglayout و GridBagConstraints

بدأه mr.beshoy في 6 مارس 2010 · 0 رد · 459 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1

فى المشاركة الموجودة فى هذا اللينك /index.php?showtopic=215891

كنت أتحاور مع الشباب فى مشكلة بسيطة متعلقة ببناء ال GUI و هو عبارة عن panel عليها صورة + panel عليها buttons ( المشكلة كانت تكمن فى أن أحدهما تمتد و تأخذ مساحة كبيرة جداً و الأخرى غير قابلة للتغير فى حجمها و غير قابلة للحركة )

لكن مع ال Layout المُسمى ب GridBagLayout و ال GridBagConstraints class تم حل المشكلة .

أترككم مع الشفيرة البسيطة

-------------------------------

import java.awt.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.net.URL;

public class ServicesMainFrame extends JFrame {

    private JPanel mainPanel, panel, buttonsPanel;
    private ImagePanel imagePanel;
    private JButton[] buttons;
    private String[] buttonNames = {"J2SE", "J2ME", "J2EE", "JFX", "MAVEN", "GLASSFISH", "C++", "PHP", "HELP", "ABOUT", "EXIT"};

    public ServicesMainFrame(Image image) {
        createPanel(image);
        createButtons();
        getContentPane().add(mainPanel);
    }

    private void createPanel(Image image) {
        mainPanel = new JPanel(new BorderLayout());
        panel = new JPanel(new GridLayout(1, 2));
        /////////////////////////////////////////////////////////////////////
        buttonsPanel = new JPanel(new GridLayout(15, 1, 3, 3));
        // buttonsPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
        // buttonsPanel.setBackground(Color.red);
        JPanel centerPanel1 = new JPanel(new GridBagLayout());
        buttonsPanel.setPreferredSize(new Dimension(200, 600));
        GridBagConstraints c = new GridBagConstraints();
        centerPanel1.add(buttonsPanel, c);
        panel.add(centerPanel1);
        /////////////////////////////////////////////////////////
        imagePanel = new ImagePanel(image);
        //////////////////////////////////////////////////////////
        JPanel centerPanel = new JPanel(new GridBagLayout());
        GridBagConstraints c1 = new GridBagConstraints();
        c1.insets = new Insets(10, 10, 10, 10);
        centerPanel.add(imagePanel, c1);
        panel.add(centerPanel);
        mainPanel.add(panel, BorderLayout.EAST);
    }

    public static void main(String[] args) throws Exception {
        URL imageURL = new URL("http://www.soundwordsministries.com/wp-content/uploads/2008/05/mothers-day-flowers.jpg");
        Image image = ImageIO.read(imageURL);
        ServicesMainFrame servicesMainFrame = new ServicesMainFrame(image);
        servicesMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        servicesMainFrame.setSize(new Dimension(600, 300));
        servicesMainFrame.setLocationRelativeTo(null);
        servicesMainFrame.setVisible(true);
        servicesMainFrame.pack();
        servicesMainFrame.setExtendedState(MAXIMIZED_BOTH);
    }

    private void createButtons() {
        buttons = new JButton[buttonNames.length];
        for (int i = 0; i < buttonNames.length; ++i) {
            buttons = new JButton(buttonNames);
            buttonsPanel.add(buttons);
        }
    }
}

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.BorderFactory;
import javax.swing.JPanel;

public class ImagePanel extends JPanel {

    private Image image;

    public ImagePanel(Image image) {
        this.image = image;
        setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
        setPreferredSize(new Dimension(image.getWidth(this), image.getHeight(this)));
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}

عشان أستاذنا علاء بيحب الملفات المرفقة :lol: ( ستجدون الملف مرفق ) .

صحيح مشكلة بسيطة و أخذت وقت معى - و تعبت الإخوة جدا و أرجو أن يسامحونى ً - لكن خرجنا بفائدة

-------------------

نقول مع الشاعر :

كان حُلماً فخاطراً فاحتمالاً .. أضحى الآن حقيقة لا خيالاً

:lol:

شكراً

services.rar

مواضيع مشابهة