Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JLabels将一个文本置于另一个文本之上?_Java_Jlabel_Setbounds - Fatal编程技术网

Java 如何使用JLabels将一个文本置于另一个文本之上?

Java 如何使用JLabels将一个文本置于另一个文本之上?,java,jlabel,setbounds,Java,Jlabel,Setbounds,我正在尝试制作一个文本列表,如下所示: 我有以下代码: panelPunts=newjpanel(); 镶板平底(颜色:灰色); 添加(panelPunts,BorderLayout.EAST); JLabel titol=新的JLabel(); titol.setText(“点”); 立根(0,0,200,50); 添加(铁石); JLabel etnia1=新的JLabel(); etnia1.setText(“团队A:20”); etnia1.挫折(0,20,200,50); 添加(et

我正在尝试制作一个文本列表,如下所示:

我有以下代码:

panelPunts=newjpanel();
镶板平底(颜色:灰色);
添加(panelPunts,BorderLayout.EAST);
JLabel titol=新的JLabel();
titol.setText(“点”);
立根(0,0,200,50);
添加(铁石);
JLabel etnia1=新的JLabel();
etnia1.setText(“团队A:20”);
etnia1.挫折(0,20,200,50);
添加(etnia1);
JLabel etnia2=新的JLabel();
etnia2.setText(“团队A:10”);
etnia2.挫折(0,40,200,50);
小组讨论。添加(etnia2);
但是,它看起来是这样的:

我已经读到
setBounds()
方法中的第二个参数是Y位置,但是如果我将其设置得非常高,它不会改变。为什么它不能正确显示?

尝试使用

JPanel panelPunts = new JPanel();

panelPunts.setLayout(new GridLayout(3,1));

JPanel
默认情况下使用
FlowLayout
,从不使用
setBounds()
。让布局管理器设置组件的位置

有关更多示例代码,请查看


提示:只需从标题中分离出最后两个标签。在另一个
JPanel中添加标签

示例代码:(使用)

JPanel panelPunts=newjpanel();
setLayout(新的GridBagLayout());
镶板平底(颜色:灰色);
GridBagConstraints gc=新的GridBagConstraints();
gc.gridx=0;
gc.gridy=0;
gc.anchor=gridbag.NORTH;
gc.insets=新的insets(5,5,5,5);
JLabel titol=新的JLabel();
titol.setText(“点”);
添加(titol,gc);
gc.gridy=1;
JLabel etnia1=新的JLabel();
etnia1.setText(“团队A:20”);
panelPunts.add(etnia1,gc);
gc.gridy=2;
JLabel etnia2=新的JLabel();
etnia2.setText(“团队A:10”);
panelPunts.add(etnia2,gc);

请不要使用
NullLayout
,而是使用任何其他LayoutManager(请考虑使用
GridLayout
)。初始化
JPanel
时的标准布局FlowLayout不适用于此任务。另外,您的
setBounds
方法调用仅在使用NullLayout时相关。。。你不应该这样。您还可以使用
JList
而不是多个
jlabel
来实现这一点。请考虑使用此信息更改代码,如果有问题,请更新您的答案。

<代码> jPuth<代码>默认使用<代码> FlowLayout < /代码>。为什么不使用<代码> FlowLayout <代码>?FlowLayout很好,只是不适合这个任务。我用过这个。有没有办法不让它填满整个JPanel?是的,使用
GridBagLayout
,您可以完全控制组件。
    JPanel panelPunts = new JPanel();
    panelPunts.setLayout(new GridBagLayout());
    panelPunts.setBackground(Color.GRAY);

    GridBagConstraints gc = new GridBagConstraints();
    gc.gridx = 0;
    gc.gridy = 0;
    gc.anchor = GridBagConstraints.NORTH;
    gc.insets = new Insets(5, 5, 5, 5);

    JLabel titol = new JLabel();
    titol.setText("<html><h1><u> Points</u></h1></html>");
    panelPunts.add(titol, gc);

    gc.gridy = 1;
    JLabel etnia1 = new JLabel();
    etnia1.setText("Team A: 20");
    panelPunts.add(etnia1, gc);

    gc.gridy = 2;
    JLabel etnia2 = new JLabel();
    etnia2.setText("Team A: 10");
    panelPunts.add(etnia2, gc);