jpanel中的元素都不在jframe中显示

7cwmlq89  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(371)

这个问题在这里已经有答案了

jlabel不会与jpanel.setlayout(null)一起显示。为什么(2个答案)
四年前关门了。
我找了几个小时类似的问题,但我对这个问题一无所知。希望有人能帮我。
这是上课时间 SimulatedWindow 除进口商品外:

public class SimulatedWindow extends JFrame {

    private JFrame defFrame = new JFrame();

    SimulatedWindow() {
        windowsInit();
    }

    private void windowsInit() {
        defFrame.setSize(new Dimension(600, 480));
        defFrame.setTitle("Radar Simulate System");
        defFrame.setLayout(null);
        defFrame.setLocation(100, 100);

        DefPanel defPanel = new DefPanel();
        // this.getContentPane().add(defPanel, BorderLayout.CENTER);
        this.add(new DefPanel());
        defFrame.add(defPanel);
        defFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        defFrame.setVisible(true);
    }

    class DefPanel extends JPanel {
        private LeftPanel myLeftPanel;
        private RightPanel myRightPanel;

        public DefPanel() {
            setLayout(null);
            myLeftPanel = new LeftPanel();
            myRightPanel = new RightPanel();

            add(new JButton("Hello World!"));
            add(myLeftPanel);
            add(myRightPanel);
            System.out.println("DefPAnel");
        }
    }

    class LeftPanel extends JPanel {
        private JButton avgSpeedButton = new JButton();
        private JButton trafficColumeButton = new JButton();
        private JLabel avgSpeedLabel = new JLabel();
        private JLabel trifficColumeLabel = new JLabel();
        private JLabel curTimeLabel = new JLabel();

        LeftPanel() {
            setLayout(null);
            this.setBounds(0, 0, this.getSize().width, this.getSize().height);

            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            curTimeLabel.setText(df.format(new Date()));
            add(curTimeLabel);

            add(avgSpeedButton);

            System.out.println("LeftPanel");
        }
    }
}

主要功能如下:

public class SimulatedWindowTest {

    public static void main(String[] args) {
        SimulatedWindow simulatedWindow = new SimulatedWindow();
    }
}

没有任何元素( JButton , JLabel )在 JPanel 正在显示。

hwamh0ep

hwamh0ep1#

我相信这可能是你的问题:检查一下
主要答案是:
这就是绝对定位(或空布局)的问题。它要求您设置所有组件的大小,否则它们将保持默认的零大小,并且不会出现。这就是为什么使用布局管理器总是更好的原因。

相关问题