一个 JLabel 消失,当有两个
One JLabel disapears, when there are two
好的,所以我在 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) {
}
}
所以,如果有人能帮我解决这个问题,我将不胜感激。
add(title);
add(subTitle, BorderLayout.CENTER);
看看这段代码,标签。您没有设置标签的位置。所以做与 subtitle 相同的事情。例如
add(title ,BorderLayout.NORTH );
第二个subTitle会覆盖第一个Title,需要在设置Layout后添加。
我建议您先看看 A Visual Guide to Layout Managers and How to Use Borders and having a look at the 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 一直在研究这个彩票程序,我的代码处于最开始阶段,我被困在这个问题上。因此,当我创建 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) {
}
}
所以,如果有人能帮我解决这个问题,我将不胜感激。
add(title);
add(subTitle, BorderLayout.CENTER);
看看这段代码,标签。您没有设置标签的位置。所以做与 subtitle 相同的事情。例如
add(title ,BorderLayout.NORTH );
第二个subTitle会覆盖第一个Title,需要在设置Layout后添加。
我建议您先看看 A Visual Guide to Layout Managers and How to Use Borders and having a look at the 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);
}
现在将在北位置放置一个标签,在南位置放置一个标签