当有两个时,一个JLabel消失了

时间:2017-03-26 22:02:12

标签: java swing jlabel

好的,所以我一直在用Java编写这个抽奖程序,我的代码处于极端开始阶段,我仍然坚持这个问题。因此,当我创建2个JLabel并运行该程序时,只有一个显示。我一直试图找到一些答案,所以我希望有人可以提供帮助。这是我的代码:

class BlogPageComment(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    page = ForeignKey('BlogPage', related_name='comments')
    comment_author = models.CharField(max_length=50)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    approved_comment = models.BooleanField(default=False)

所以,如果有人能够帮助我解决这个问题,我们将不胜感激。

3 个答案:

答案 0 :(得分:3)

我建议您首先查看A Visual Guide to Layout ManagersHow to Use Borders,然后查看JavaDocs for BorderLayout也可能会对您的问题过程有所启发

你有两个关键问题......

  1. BorderLayout只允许在五个可用位置中的任何一个位置管理单个组件,默认位置为CENTER
  2. BorderLayout将忽略在设置之前添加的所有组件
  3. 所以,如果我们把你的代码改成像

    那样
    public Lottery() {
        setLayout(new BorderLayout());
    
        title = new JLabel(Title, JLabel.CENTER);
        title.setFont(title.getFont().deriveFont(30.0f));
        add(title);
    
    
        subTitle = new JLabel("Lottery Numbers");
        subTitle.setHorizontalAlignment(JLabel.HORIZONTAL);
        add(subTitle, BorderLayout.CENTER);
    }
    

    你最终会遇到同样的问题,但是,如果我们还提供了额外的限制......

    public Lottery() {
        setLayout(new BorderLayout());
    
        title = new JLabel(Title, JLabel.CENTER);
        title.setFont(title.getFont().deriveFont(30.0f));
        add(title, BorderLayout.NORTH);
    
    
        subTitle = new JLabel("Lottery Numbers");
        subTitle.setHorizontalAlignment(JLabel.HORIZONTAL);
        add(subTitle, BorderLayout.SOUTH);
    }
    

    现在将一个标签放在北方位置,一个放在南方

答案 1 :(得分:2)

add(title);
add(subTitle, BorderLayout.CENTER);

查看此代码,标签。您没有设置标签的位置。所以做与副标题相同的事情。例如

add(title ,BorderLayout.NORTH );

答案 2 :(得分:0)

第二个子标题会覆盖第一个标题,您必须在设置布局后添加它。