java - 在它包含的 JFrame 中看不到 JPanel
问题描述
我在编译后找不到我JPanel
的JFrame
,框架设置为BorderLayout
,面板设置为,CENTER
但是当我运行它时,面板没有出现。我的代码中是否缺少某些内容?
JFrame mainWindow = new JFrame("Francisco's System");
mainWindow.setBounds(10,10,1024,700);
borderEncode = BorderFactory.createTitledBorder("Encode Module");
borderBackup = BorderFactory.createTitledBorder("Backup Module");
borderRestore = BorderFactory.createTitledBorder("Restore Module");
lbl_testpanel1 = new JLabel("This is the Encode Panel");
lbl_testpanel2 = new JLabel("This is the Backup Panel");
lbl_testpanel3 = new JLabel("This is the Restore Panel");
mb = new JMenuBar();
menu1 = new JMenu("Functions");
menu2 = new JMenu("Help");
menu1_encode = new JMenuItem("Encode");
menu1_backup = new JMenuItem("Backup");
menu1_restore = new JMenuItem("Restore");
panelEncode = new JPanel();
panelBackup = new JPanel();
panelRestore = new JPanel();
panelMain = new JPanel();
menu1_encode.addActionListener(control);
menu1_backup.addActionListener(control);
menu1_restore.addActionListener(control);
menu1.add(menu1_encode);
menu1.add(menu1_backup);
menu1.add(menu1_restore);
mb.add(menu1);
mb.add(menu2);
mainWindow.setLayout(new BorderLayout());
panelEncode.setLayout(new FlowLayout());
panelEncode.add(lbl_testpanel1);
panelEncode.setBorder(borderEncode);
panelBackup.setLayout(new FlowLayout());
panelBackup.add(lbl_testpanel2);
panelBackup.setBorder(borderBackup);
panelRestore.setLayout(new FlowLayout());
panelRestore.add(lbl_testpanel3);
panelRestore.setBorder(borderRestore);
panelMain.setLayout(new FlowLayout());
panelMain.setBorder(BorderFactory.createLineBorder(Color.blue));
panelMain.setBackground(Color.red);
mainWindow.add(panelMain, BorderLayout.CENTER);
mainWindow.add(mb);
mainWindow.setJMenuBar(mb);
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);`enter code here`
mainWindow.setVisible(true);
}
我希望面板出现并跨越框架的宽度和高度,但它没有显示。
解决方案
我不知道那里出了什么问题,但它有效
mainWindow.add(panelMain, BorderLayout.CENTER);
mainWindow.add(mb);
以上两种说法是一回事。如果您不指定约束,则 BorderLayout 将默认使用“CENTER”。
只能将单个组件添加到 BorderLayout 中的任何给定区域。
因此,添加菜单栏替换了现有组件,即您的 panelMain。
推荐阅读
- architecture - 作为聚合根的自引用类
- c++ - 如何在 Windows 10 上修复 Visual Studio 2017 中特定于计算机的幻像 IntelliSense 错误?
- sql - 将 Find Dupes 查询转换为 Delete Dupes 查询
- excel - Workbooks.Add with Workbook in Class
- java - 在 Spring Boot Web 应用程序中使用加密密码进行数据库连接
- java - java - 如何在java中使用exec()连续捕获iperf的结果?
- spring-boot - ORA-00920 - 在 ORACLE PL/SQL 中执行 Javers 查询时出现 Sql 异常
- python - 将日期和时间与列表中的日期时间元素分开
- javascript - jQuery:onClick 未定义?
- java - 当有其类的bean时,何时调用该函数?