[英]Can't see JPanel in JFrame it's contained in
編譯后,在JFrame
找不到我的JPanel
,該框架設置為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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.