Как добавить текст JLabel поверх нескольких флажков? - PullRequest
0 голосов
/ 18 октября 2018

Я строю форму для пиццы и столкнулся с проблемой с классами JLabel и JCheckbox.

Я должен создать панель, которая имитирует инструкции по приготовлению пиццы, это должны быть различные флажки,В одном ряду должно быть 3 варианта, в другом - 2 варианта.Например:
Инструкции по приготовлению
♦ Cook Lite ♦ Дополнительный соус
♦ Легкий соус ♦ Молодец
♦ Легкий сыр

Однако вот что я получаю:
enter image description here

public CookingInstructions() {

    JLabel label1 = new JLabel();
    label1.setText("Cooking Instructions");
    setLayout(new GridLayout(0,2));
    add(label1);
    cookLite = new JCheckBox("Cook Lite");
    extraSauce = new JCheckBox("Extra Sauce");
    lightSauce = new JCheckBox("Light Sauce");
    wellDone = new JCheckBox("Well Done");
    lightCheese = new JCheckBox("Light Cheese");

    add(cookLite);
    add(extraSauce);
    add(lightSauce);
    add(wellDone);
    add(lightCheese);
}

Как мне сделать так, чтобы JLabel («Инструкции по приготовлению») оставался поверх ряда флажков независимо от количества возможных флажковесть

1 Ответ

0 голосов
/ 18 октября 2018

Вам нужно добавить новую Jpanel, которая содержит все JCheckBox.Затем вы комбинируете Jlabel и Jpanel с BorderLayout.Здесь реализация.

package javaapplication7;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.*;  
public class JavaApplication7 extends JFrame {
    JCheckBox cookLite,extraSauce,lightSauce,wellDone,lightCheese;

    JavaApplication7(){  



        JLabel label1 = new JLabel();
        label1.setText("Cooking Instructions");

        setLayout(new BorderLayout());
        add(label1,BorderLayout.NORTH);

        cookLite = new JCheckBox("Cook Lite");
        extraSauce = new JCheckBox("Extra Sauce");
        lightSauce = new JCheckBox("Light Sauce");
        wellDone = new JCheckBox("Well Done");
        lightCheese = new JCheckBox("Light Cheese");

        JPanel panel=new JPanel();
        panel.setLayout(new GridLayout(0,2));
        panel.add(cookLite);
        panel.add(extraSauce);
        panel.add(lightSauce);
        panel.add(wellDone);
        panel.add(lightCheese);

        add(panel,BorderLayout.CENTER);

        setSize(400,500); 
        setVisible(true);  

    }  
    public static void main(String[] args) {
        new JavaApplication7();  
    }

}

Надеюсь, что может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...