Java 我的boxLayout组件将从窗口中裁剪

Java 我的boxLayout组件将从窗口中裁剪,java,swing,layout,layout-manager,boxlayout,Java,Swing,Layout,Layout Manager,Boxlayout,我正在用几个滑块和按钮创建一个视图,但是它被窗口切断了,即使我手动展开窗口也是如此!我使用的是盒子布局,我的朋友也在做同样的任务,但不知怎么的,他的程序允许他安装任意多的滑块,随着他使窗口的高度变小,滑块之间的距离越来越近。然而,即使我打开窗口,大脑也会切断最后三个滑块。代码如下: public PlayerChefView(int belt_size) { this.belt_size = belt_size; listeners = new ArrayList<Che

我正在用几个滑块和按钮创建一个视图,但是它被窗口切断了,即使我手动展开窗口也是如此!我使用的是盒子布局,我的朋友也在做同样的任务,但不知怎么的,他的程序允许他安装任意多的滑块,随着他使窗口的高度变小,滑块之间的距离越来越近。然而,即使我打开窗口,大脑也会切断最后三个滑块。代码如下:

 public PlayerChefView(int belt_size) {
    this.belt_size = belt_size;
    listeners = new ArrayList<ChefViewListener>();
    setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
    //setLayout(new GridLayout(10,4));

    JLabel colorSelectionLabel = new JLabel("Plate color:", JLabel.CENTER);
    add(colorSelectionLabel);
    String[] colorSelection = {"Blue", "Red", "Green", "Gold"};
    colorBox = new JComboBox(colorSelection);
    colorBox.addActionListener(this);
    add(colorBox);

    JLabel goldPriceLabel = new JLabel("Gold plate price:", JLabel.CENTER);
    add(goldPriceLabel);
    priceSlider = new JSlider(500, 1000, 750);
    Hashtable labelTable = new Hashtable();
    labelTable.put(new Integer(500), new JLabel("$5.00"));
    labelTable.put(new Integer (600), new JLabel("$6.00"));
    labelTable.put(new Integer(700), new JLabel("$7.00"));
    labelTable.put(new Integer(800), new JLabel("$8.00"));
    labelTable.put(new Integer(900) , new JLabel("$9.00"));
    labelTable.put(new Integer(1000), new JLabel("$10.00"));
    //slider.setSnapToTicks(true);
    priceSlider.setLabelTable(labelTable);
    priceSlider.setMajorTickSpacing(100);
    priceSlider.setPaintTicks(true);
    priceSlider.setPaintLabels(true);
    add(priceSlider);

    JLabel positionLabel = new JLabel("Plate position:", JLabel.CENTER);
    add(positionLabel);
    Integer[] positions = new Integer[belt_size];
    for (Integer i = 1; i<=belt_size; i++){
        positions[i - 1] = i;
    }
    positionBox = new JComboBox(positions);
    positionBox.addActionListener(this);
    add(positionBox);


    JLabel sashimiOrNigiriLabel = new JLabel("Would you like to make "
            + "Sashimi or Nigiri?", JLabel.CENTER);
    add(sashimiOrNigiriLabel);
    String[] sashimiOrNigiri = {"Sashimi", "Nigiri" };
    sashimiOrNigiriBox = new JComboBox(sashimiOrNigiri);
    sashimiOrNigiriBox.addActionListener(this);
    add(sashimiOrNigiriBox);

    JLabel seafoodTypeLabel = new JLabel("For sashimi or Nigiri ONLY, what seafood?", JLabel.CENTER);
    add(seafoodTypeLabel);
    String[] seafood = {"Tuna", "Salmon", "Eel", 
            "Crab", "Shrimp"};
    seafoodTypeBox = new JComboBox(seafood);
    seafoodTypeBox.addActionListener(this);
    add(seafoodTypeBox);

    JButton makeSashimiOrNigiri = new JButton("Create sashimi/nigiri!");
    //System.out.println(colorBox.getSelectedItem().toString());
    makeSashimiOrNigiri.setActionCommand("sashimi/nigiri");
    makeSashimiOrNigiri.addActionListener(this);
    add(makeSashimiOrNigiri);
    JLabel blankLabel = new JLabel("", JLabel.RIGHT);
    add(blankLabel);


    JLabel avacadoLabel = new JLabel("The following sliders are for rolls only: select avacado amt. (oz.)", JLabel.LEFT);
    add(avacadoLabel);
    avocadoSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    amountLabels = new Hashtable();
    amountLabels.put(new Integer(0), new JLabel("0.0"));
    amountLabels.put(new Integer (25), new JLabel(".25"));
    amountLabels.put(new Integer(50), new JLabel(".50"));
    amountLabels.put(new Integer(75), new JLabel(".75"));
    amountLabels.put(new Integer(100) , new JLabel("1.00"));
    amountLabels.put(new Integer(125), new JLabel("1.25"));
    amountLabels.put(new Integer(150), new JLabel("1.50"));
    avocadoSlider.setLabelTable(amountLabels);
    avocadoSlider.setMajorTickSpacing(25);
    avocadoSlider.setPaintTicks(true);
    avocadoSlider.setPaintLabels(true);
    add(avocadoSlider);

    JLabel crabLabel = new JLabel("select crab amt. (oz.)", JLabel.LEFT);
    add(crabLabel);
    crabSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    crabSlider.setLabelTable(amountLabels);
    crabSlider.setMajorTickSpacing(25);
    crabSlider.setPaintTicks(true);
    crabSlider.setPaintLabels(true);
    add(crabSlider);

    JLabel eelLabel = new JLabel("select eel amt. (oz.)", JLabel.LEFT);
    add(eelLabel);
    eelSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    eelSlider.setLabelTable(amountLabels);
    eelSlider.setMajorTickSpacing(25);
    eelSlider.setPaintTicks(true);
    eelSlider.setPaintLabels(true);
    add(eelSlider);

    JLabel riceLabel = new JLabel("select rice amt. (oz.)",             JLabel.LEFT);
    add(riceLabel);
    riceSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    riceSlider.setLabelTable(amountLabels);
    riceSlider.setMajorTickSpacing(25);
    riceSlider.setPaintTicks(true);
    riceSlider.setPaintLabels(true);
    add(riceSlider);

    JLabel salmonLabel = new JLabel("select salmon amt. (oz.)", JLabel.LEFT);
    add(salmonLabel);
    salmonSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    salmonSlider.setLabelTable(amountLabels);
    salmonSlider.setMajorTickSpacing(25);
    salmonSlider.setPaintTicks(true);
    salmonSlider.setPaintLabels(true);
    add(salmonSlider);

    JLabel seaweedLabel = new JLabel("select seaweed amt. (oz.)", JLabel.LEFT);
    add(seaweedLabel);
    seaweedSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    seaweedSlider.setLabelTable(amountLabels);
    seaweedSlider.setMajorTickSpacing(25);
    seaweedSlider.setPaintTicks(true);
    seaweedSlider.setPaintLabels(true);
    add(seaweedSlider);

    JLabel shrimpLabel = new JLabel("select shrimp amt. (oz.)", JLabel.LEFT);
    add(shrimpLabel);
    shrimpSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    shrimpSlider.setLabelTable(amountLabels);
    shrimpSlider.setMajorTickSpacing(25);
    shrimpSlider.setPaintTicks(true);
    shrimpSlider.setPaintLabels(true);
    add(shrimpSlider);

    JLabel tunaLabel = new JLabel("select tuna amt. (oz.)", JLabel.LEFT);
    add(tunaLabel);
    tunaSlider = new JSlider(JSlider.HORIZONTAL, 0, 150, 0);
    tunaSlider.setLabelTable(amountLabels);
    tunaSlider.setMajorTickSpacing(25);
    tunaSlider.setPaintTicks(true);
    tunaSlider.setPaintLabels(true);
    add(tunaSlider);
public PlayerChefView(内部传送带尺寸){
此。皮带尺寸=皮带尺寸;
侦听器=新的ArrayList();
setLayout(新的BoxLayout(这是BoxLayout.Y_轴));
//setLayout(新网格布局(10,4));
JLabel colorSelectionLabel=新的JLabel(“板材颜色:”,JLabel.CENTER);
添加(颜色选择标签);
字符串[]颜色选择={“蓝色”、“红色”、“绿色”、“金色”};
colorBox=新的JComboBox(颜色选择);
colorBox.addActionListener(这个);
添加(颜色框);
JLabel goldPriceLabel=新JLabel(“金盘价格:”,JLabel.CENTER);
添加(goldPriceLabel);
priceSlider=新的JSlider(5001000750);
Hashtable labelTable=新的Hashtable();
labelTable.put(新整数(500),新JLabel($5.00));
labelTable.put(新整数(600),新JLabel($6.00));
labelTable.put(新的整数(700),新的JLabel($7.00));
labelTable.put(新的整数(800),新的JLabel($8.00));
labelTable.put(新整数(900),新JLabel($9.00));
labelTable.put(新整数(1000),新JLabel($10.00));
//slider.setSnapToTicks(真);
价格滑块。可设置标签(可标签);
priceSlider.setMajorTickSpacing(100);
priceSlider.setPaintTicks(true);
priceSlider.setPaintLabels(真);
添加(价格滑块);
JLabel位置标签=新JLabel(“板位置:”,JLabel.中心);
添加(位置标签);
整数[]位置=新整数[皮带大小];

对于(整数i=1;i1)为了更快地获得更好的帮助,请发布一个or。该代码有7个滑块和许多标签。可以使用两个滑块而不使用标签进行复制吗?2)在将它们添加到问题之前,请阅读有用的标签弹出窗口。这个问题与标签无关!3)就屏幕截图而言,可以用以下文字来总结“滑块在GUI的底部被切断了”,但也可以,谢谢,我猜?但不管怎样,我自己弄明白了,我把它切换到网格布局,行位置为0