JPanel 不显示 JLabel

问题描述

我正在尝试制作一个应用程序,该应用程序显示一个 JLabel 和一个按钮,如果单击该按钮会切换到另一个 jPanel。出于某种原因,我的 JLabel 在任何一种情况下都没有显示。我很感激专家的眼光来查看我的代码,看看我做错了什么。提前致谢。

HomeScreenUI(){
        //frame
        JFrame frame = new JFrame("Opisa");

        //panels,one before button click and one after
        JPanel panel = new JPanel();
        JPanel panelAfterButtonClick = new JPanel();
        panel.setLayout(null);
        panelAfterButtonClick.setLayout(null);
        
        //jlabel that isnt displaying + dimensions
        JLabel label = new JLabel("Opisa");
        Dimension size = label.getPreferredSize();
        label.setBounds(100,100,size.width,size.height);
        label.setFont(new Font("Helvetica",Font.PLAIN,70));
        
        //second jlabel that isn't displaying
        JLabel label2 = new JLabel("Opisa");
        Dimension size4 = label2.getPreferredSize();
        label2.setBounds(100,size4.width,size4.height);
        label2.setFont(new Font("Helvetica",70));
        
        //adding the labels to the panels
        panel.add(label);
        panelAfterButtonClick.add(label2);
        
        //button that is displaying both before and after
        JButton button = new JButton("Click Me..");
        JButton buttonAfterClick = new JButton("Clicked Me..");
        //dimensions
        Dimension size2 = button.getPreferredSize();
        button.setBounds(100,size2.width,size2.height);
        Dimension size3 = button.getPreferredSize();
        buttonAfterClick.setBounds(100,size3.width,size3.height);
        //adding the buttons to the jpanel
        panel.add(button);
        panelAfterButtonClick.add(buttonAfterClick);
        
        //function that changes the panel after the button is clicked
        button.addActionListener(new ActionListener() {

              public void actionPerformed(ActionEvent event) {
                  frame.setContentPane(panelAfterButtonClick);
                  frame.invalidate();
                  frame.validate();
              }

            });
        //adding the panel to the frame and setting the size
        frame.add(panel);
        frame.setSize(1000,800);
        frame.setVisible(true);
    }

解决方法

检查标签边界,更具体地说是它的大小...尝试设置一些固定值(足以显示其内容,如 setBounds(100,100,250,80))。

在更改字体大小之前正在检索首选大小,因此它不足以显示大字符。首先尝试更改字体。