Java 将JPanel添加到JFrame?
我正在尝试将JLabel添加到JFrame的JPanel中。我为JPanel设置了边框,但是我在JFrame上看到的只是我的框架中心的一个黑色小正方形。无论我做什么,我都不能改变它的大小或位置。请帮忙Java 将JPanel添加到JFrame?,java,swing,jframe,jpanel,jlabel,Java,Swing,Jframe,Jpanel,Jlabel,我正在尝试将JLabel添加到JFrame的JPanel中。我为JPanel设置了边框,但是我在JFrame上看到的只是我的框架中心的一个黑色小正方形。无论我做什么,我都不能改变它的大小或位置。请帮忙 Start main = new Start(); Random random = new Random(); JFrame mainFrame = new JFrame("MainFrame"); JPanel mainPanel = new JPanel();
Start main = new Start();
Random random = new Random();
JFrame mainFrame = new JFrame("MainFrame");
JPanel mainPanel = new JPanel();
JLabel welcomeLabel = new JLabel();
mainFrame.add(main);
mainFrame.setLayout(new GridBagLayout());
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setTitle(names[random.nextInt(names.length)]);
mainFrame.pack();
mainFrame.setVisible(true);
mainFrame.setSize(mainFrameX, mainFrameY);
mainFrame.setResizable(false);
mainFrame.setLocationRelativeTo(null);
mainFrame.add(mainPanel);
mainPanel.add(welcomeLabel);
mainPanel.setBorder(new LineBorder(Color.BLACK));
mainPanel.setSize(new Dimension(200, 200));
welcomeLabel.setFont(new Font("Verdana", 1, 20));
welcomeLabel.setLocation(100, 100);
main.start();
建议:
- 您需要阅读本教程,因为它将解释如何使用Swing布局管理器进行编码,而这些信息对于解决当前的问题至关重要李>
- 一个警告:我敦促您避免使用空布局的诱惑,因为使用它将导致创建非常难以维护或升级的代码
- 您的JLabel welcomeLabel当然需要一些文本才能显示李>
- 不要通过setLocation(…)设置它的位置,但要再次使用布局管理器来完成放置和调整组件大小的繁琐工作李>
- 在添加所有初始组件后,还需要在JFrame上调用pack()和setVisible(true)李>
- 气垫船是正确的(+1),请确保您了解布局管理器的工作原理
做事的顺序很重要,尤其是在处理顶级容器时
这仍然只会在窗口中生成一个小的黑色正方形,因为Start main = new Start(); Random random = new Random(); JFrame mainFrame = new JFrame("MainFrame"); JPanel mainPanel = new JPanel(); JLabel welcomeLabel = new JLabel(); welcomeLabel.setFont(new Font("Verdana", 1, 20)); mainPanel.add(welcomeLabel); mainPanel.setBorder(new LineBorder(Color.BLACK)); // Do this first mainFrame.setLayout(new GridBagLayout()); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setTitle(names[random.nextInt(names.length)]); // Add your components mainFrame.add(main); mainFrame.add(mainPanel); // Prepare the window for showing, now you have some content. mainFrame.setResizable(false); mainFrame.pack(); mainFrame.setVisible(true); mainFrame.setLocationRelativeTo(null); main.start();
没有内容,因此它的首选大小是(类似)2x2(因为边框) 尝试将一些文本添加到JLabel
然后看看区别welcomeLabel.setText("Welcome");