如何在多个复选框的顶部添加JLabel文本?

时间:2018-10-17 22:03:21

标签: java swing

我正在构建一个Pizza表单,并遇到了JLabel和JCheckbox类的问题。

我应该构建一个面板来模拟披萨的烹饪说明,它应该是各种复选框。一行中应有3个选项,另一行中应有2个选项。例如:
烹饪说明
♦库克精简版 ♦酱油
♦酱油 ♦做得好
♦清淡的奶酪

但是,这就是我得到的:
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 :(得分:-1)

您需要添加容纳所有JCheckBox的新Jpanel。然后,将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();  
    }

}

希望有帮助