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);