好的,所以我一直在用Java开发这个彩票程序,而我的代码正处于极端的开始阶段,因此我陷入了这个问题。因此,当我创建2个JLabel并运行该程序时,仅显示一个。我已经尝试寻找答案已有一段时间了,所以我希望有人可以提供帮助。这是我的代码:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Lottery extends JPanel implements ActionListener {
private static final long serialVersionUID = 5815877011755522230L;
private JTextField text;
private JLabel title, subTitle;
public final String Title = "Lottery";
public static void main(String[] args) {
make();
}
public Lottery() {
title = new JLabel(Title, JLabel.CENTER);
title.setFont(title.getFont().deriveFont(30.0f));
add(title);
subTitle = new JLabel("Lottery Numbers");
subTitle.setHorizontalAlignment(JLabel.HORIZONTAL);
setLayout(new BorderLayout());
add(subTitle, BorderLayout.CENTER);
}
public static void make(){
JFrame frame = new JFrame("Lottery");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Lottery hi = new Lottery();
frame.setContentPane(hi);
frame.setSize(600, 600);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
}
因此,如果有人能够帮助我解决这个问题,将不胜感激。
最佳答案
我建议您先看一下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);
}
现在将在北侧放置一个标签,在南侧放置一个标签
关于java - 当有两个JLabel消失时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43035103/