سؤال

كان لدي مشكلة في استخدام إطار بسيط للغاية يحتوي على اثنين من JPanel. المشكلة هي على تخطيط مركز JPanel الذي يحتوي على أربعة JButton. كيف يمكنني تعيين حجم أفضل للأزرار أو مباشرة إلى JPanel التي تستخدم Gridlayout. على الصورة المشكلة:

Alt http://img42.imageshack.us/img42/4601/horrible.jpg. !

هنا الرمز: `نافذة JFrame = JFrame الجديد (" فظيع! لول ")؛

    JTextField textField = new JTextField("");
    textField.setPreferredSize(new Dimension(200,20));
    JPanel textPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    textPanel.add(textField);
    window.add(textPanel, BorderLayout.NORTH);

    JButton plus = new JButton("+");
    //plus.setPreferredSize(new Dimension(50,50)); nothing would change
    JButton minus = new JButton("-");
    JButton per = new JButton("x");
    JButton divide = new JButton("/");
    JPanel prova = new JPanel(new GridLayout(2,2,10,10));
    Dimension d = new Dimension(20,20);
    prova.setMaximumSize(d); // nothing changed!

    prova.add(plus);
    prova.add(minus);
    prova.add(per);
    prova.add(divide);
    window.add(prova, BorderLayout.CENTER);

    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(250,300);
    window.setResizable(false);
    window.setVisible(true);`

ما هو الحل الجيد؟

أطيب التحيات

هل كانت مفيدة؟

المحلول

لسوء الحظ، احترم Gridlayout الأحجام المفضلة. ولكن لا يزال إذا كنت ترغب في الالتزام بتخطيط الشبكة، فيمكنك تجربة شيء مثل هذا:

    public static JComponent wrap(JComponent comp)
    {
        JPanel panel = new JPanel();
        panel.add(comp);
        return panel;
    }

ثم بدلا من Direclty إضافة إلى Prova أضف مثل هذا:

            prova.add(wrap(plus)); 
            prova.add(wrap(minus)); 
            prova.add(wrap(per)); 
            prova.add(wrap(divide));

اختبار، يعمل الكمال! هناك طرق أفضل أخرى

نصائح أخرى

هذا ما يحدث لي: إنه مرتبط بالتأكيد بالحافة العليا للشبكة.

نص Alt http://img96.imageshack.us/img96/9431/stillnot.jpg.

حتى لو في هذه الحالة، في طريقة التفاف، يمكنني ضبط الأزرار المفضلة / شركات، كل أزرار على حافةها الخاصة. ماذا عن حلول أخرى. كيف يمكنك وضع أزرار آلة حاسبة؟ نحيات لطيفة و thanx angain!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top