我正在尝试将这两个JPanel
添加到JFrame
,但是只有框架显示且没有添加任何内容。任何人都可以帮助我,我缺少什么来添加这些面板?
import javax.swing.*;
import java.awt.GridLayout;
public class grid_Base extends JFrame {
JFrame mainp = new JFrame();
JPanel p = new JPanel();
JPanel p2 = new JPanel();
clickButtons buttons[] = new clickButtons[100];
public grid_Base() {
super("Battleship");
mainp.setSize(800, 1500);
mainp.setResizable(true);
mainp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainp.setVisible(true);
p.setLayout(new GridLayout(10, 10));
for (int i = 0; i < 100; i++) {
buttons[i] = new clickButtons();
p.add(buttons[i]);
}
mainp.add(p);
p2.setLayout(new GridLayout(10, 10));
for (int i = 0; i < 100; i++) {
buttons[i] = new clickButtons();
p2.add(buttons[i]);
}
mainp.add(p2);
}
}
答案 0 :(得分:2)
setVisible(true);
JFrame
使用BorderLayout
作为默认布局,因此使用mainp.add(p)
然后mainp.add(p2)
将隐藏p
,因为只有p2
才会布局...... JFrame
延伸(特别是因为你已经有JFrame
的实例字段),这只会让它更加混乱...... 答案 1 :(得分:-1)
您可以对代码进行这些更改,以便查看面板。将值更改为您的要求。
mainp.getContentPane().setLayout(null); //<=== New line
p.setLayout(new GridLayout(10, 10));
p.setBounds(10,10,390,1300); //<=== position of panel1
p.setBorder(BorderFactory.createTitledBorder("Panel1")); // border
mainp.add(p);
....
p2.setLayout(new GridLayout(10, 10));
p2.setBounds(400,10,380,1300); //<=== position of panel2
p2.setBorder(BorderFactory.createTitledBorder("Panel2")); //border
mainp.add(p2);