java - سوينغ كومبوننت-تعطيل تغيير الحجم في التخطيط




swing user-interface (2)

لدي مخصص غوي كومبوممت، الذي يقوم على جبينل سوينغ ل. يتم وضع هذا المكون في جفريم، يستخدم بوردرلايوت. عند تغيير حجم الإطار، يبقى هذا المكون تغيير الحجم. كيف يمكنني تجنب ذلك؟ وأود أن المكون للحفاظ على نفس الحجم مهما حدث. لقد حاولت سيتسيزي، سيتبريفيردزيزي، سيتمينومززيز مع أي نجاح.

شكرا مقدما!

M


//this will restrict size on fix size, what ever size you will define for panel like
//panel.setSize(400,400);


    panel.setMaximumSize(panel.getSize());
    panel..setMinimumSize(panel.getSize());

لديك بعض الخيارات:

  • عش العنصر في لوحة الداخلية مع LayoutManager التي لا تغيير حجم المكون الخاص بك

  • استخدام لايوتماناجر أكثر تطورا من BorderLayout . يبدو لي مثل GridBagLayout تناسب احتياجاتك أفضل هنا.

مثال على الحل الأول:

import java.awt.*;
import javax.swing.*;

public class FrameTestBase extends JFrame {

    public static void main(String args[]) {
        FrameTestBase t = new FrameTestBase();

        JPanel mainPanel = new JPanel(new BorderLayout());

        // Create some component
        JLabel l = new JLabel("hello world");
        l.setOpaque(true);
        l.setBackground(Color.RED);

        JPanel extraPanel = new JPanel(new FlowLayout());
        l.setPreferredSize(new Dimension(100, 100));
        extraPanel.setBackground(Color.GREEN);

        // Instead of adding l to the mainPanel (BorderLayout),
        // add it to the extra panel
        extraPanel.add(l);

        // Now add the extra panel instead of l
        mainPanel.add(extraPanel, BorderLayout.CENTER);

        t.setContentPane(mainPanel);

        t.setDefaultCloseOperation(EXIT_ON_CLOSE);
        t.setSize(400, 200);
        t.setVisible(true);
    }
}

نتيجة:

العنصر الأخضر وضعت في BorderLayout.CENTER ، المكون الأحمر يحافظ على حجم المفضل.







resize