JLabel不会与JPanel.setLayout(null)一起显示。为什么?

【字号: 日期:2024-02-24浏览:43作者:雯心
如何解决JLabel不会与JPanel.setLayout(null)一起显示。为什么??

这是绝对定位(或null布局)的问题。它要求您设置所有组件的大小,否则它们将保留为默认的零大小,并且不会显示。这就是为什么使用布局管理器总是更好的原因。

解决方法

我想在地图上显示许多不同的标签,所以我在面板中使用空布局,并为每个标签调用setLocation。但是由于某种原因,标签没有显示。如果删除pan.setLayout(null),则标签将出现在面板的顶部中央。为什么null布局不能与setPosition一起使用?

package mapa;import java.awt.*;import javax.swing.*;public class Mapa extends JFrame { private static JPanel pan; private static JLabel lab; public Mapa() { } private static void createAndShowGUI() { Mapa frame = new Mapa(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); lab = new JLabel('TEXTO'); lab.setBackground(Color.black); lab.setForeground(Color.white); lab.setOpaque(true); lab.setVisible(true); pan = new JPanel(); pan.setLayout(null); pan.setPreferredSize(new Dimension(640,480)); pan.add(lab); lab.setLocation(100,100); frame.getContentPane().add(pan,BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() {createAndShowGUI(); } }); }}

相关文章: