سؤال

أريد أن أضيف خرافة عمودي بين مكونين باستخدام Gridbaglayout. الرمز الذي لدي هو كما يلي:

public MainWindowBody(){
    setLayout(new GridBagLayout());

    JPanel leftPanel = new InformationPanel();
    JPanel rightPanel = new GameSelectionPanel();

    JSeparator sep = new JSeparator(JSeparator.VERTICAL);
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.NORTH;

    add(leftPanel,gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.VERTICAL;

    add(sep,gbc);

    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.NONE;

    add(rightPanel,gbc);
}

لكن Jseperator لا يظهر، أي أفكار؟

شكرا

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

المحلول

يمكنك محاولة تعيين العرض المفضل للفصل:

sep.setPreferredSize(new Dimension(5,1));

ثم، اجعل Gridbaglayout استخدم كل ارتفاع متاح للفصل:

gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;

نصائح أخرى

مأخوذ من شمس دليل JSeparator:

في معظم التطبيقات، يحتوي فاصل عمودي على ارتفاع مفضل من 0، ويكون هناك فاصل أفقي عرض مفضل من 0. هذا يعني فاصل غير مرئي إلا إذا قمت بإما قمت بتعيين حجمها المفضل أو وضعه تحت سيطرة مدير التخطيط مثل Borderlayout أو boxlayout الذي يمتد إلى ملء منطقة العرض المتاحة.

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

ربما يجب عليك تعيين القيود اليمنى؟

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