好的,所以我一直在用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)
所以,如果有人能够帮助我解决这个问题,我们将不胜感激。
答案 0 :(得分:3)
我建议您首先查看A Visual Guide to Layout Managers和How to Use Borders,然后查看JavaDocs for BorderLayout
也可能会对您的问题过程有所启发
你有两个关键问题......
BorderLayout
只允许在五个可用位置中的任何一个位置管理单个组件,默认位置为CENTER
BorderLayout
将忽略在设置之前添加的所有组件所以,如果我们把你的代码改成像
那样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)
第二个子标题会覆盖第一个标题,您必须在设置布局后添加它。