对于GridBagConstraints混淆中的JLabel循环,GUI显示黑色符号而不是天

时间:2017-10-25 00:31:22

标签: java for-loop gridbaglayout

下面我将尝试使用Java为日历创建GUI。我只需要为10月创建一个月GUI。我不需要任何主动或动态设置,它只需要是静态的。

只需要显示十月份。但是,我遇到了一些我不熟悉的问题,我从未遇到过打印到终端的问题。

使用AWT,Swing组件对我来说是新的。

我的主要问题是我创建的循环应该会创建一个奇怪的黑暗形状而不是数字。

我知道它与JLabel有关,我尝试将int转换为字符串,但我觉得我可能错过了一些让我头脑发热的东西。

我为所有代码道歉,但我希望大家都能看到所有代码,看看我的错误是否存在于其他地方。

错误在我的循环中然而就在这之下。

    layoutConst = new GridBagConstraints();
     for (int y = 2; y <= 6; y++) {
        for (int x = 0; x <= 6; x++) {
            layoutConst.gridx = x;
            layoutConst.gridy = y;
            for (int a = 1; a <= 31; a++) {

                layoutConst.insets = new Insets(10,10,10,10);
                this.add(new JLabel(String.valueOf(a)), layoutConst);

            }

        }
     }

以下是该类的其余代码。

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.*;
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.BorderFactory;
import java.util.Arrays;

public class CalendarFrame extends JFrame {

  public CalendarFrame() {



    JLabel month = null;
    GridBagConstraints layoutConst = null;

    month = new JLabel ("October");

    this.setTitle("Monthly Calendar");

    this.setLayout(new GridBagLayout() );

    // create gb contstraints
    layoutConst = new GridBagConstraints();

    layoutConst.gridx = 3;
    layoutConst.gridy = 0;

    layoutConst.insets = new Insets (0,0,0,0);

    this.add(month, layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 0;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("S "), layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 1;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("M "), layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 2;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("T"), layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 3;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("W"), layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 4;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("T"), layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 5;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("F "), layoutConst);

    layoutConst = new GridBagConstraints();
    layoutConst.gridx = 6;
    layoutConst.gridy = 1;
    layoutConst.insets = new Insets(10, 10, 10, 10);
    this.add(new JLabel("S"), layoutConst);

    //GridBagConstraints gbc = new GridBagConstraints();
    layoutConst = new GridBagConstraints();
     for (int y = 2; y <= 6; y++) {
        for (int x = 0; x <= 6; x++) {
            layoutConst.gridx = x;
            layoutConst.gridy = y;
            for (int a = 1; a <= 31; a++) {
                //String b = String.valueOf(a);
                layoutConst.insets = new Insets(10,10,10,10);
                this.add(new JLabel(String.valueOf(a)), layoutConst);
                //this.add(new JLabel(Integer.toString(a)), layoutConst);
                //this.add(new JLabel(b), gbc);
            }

        }
     }




   }// end calendar frame

}// end class 

下面是我输出的图片。为什么我会得到这些奇怪的符号?

enter image description here

0 个答案:

没有答案