Java 正在尝试将多个JPanel添加到JFrame
我试图将这两个Java 正在尝试将多个JPanel添加到JFrame,java,swing,jframe,jpanel,layout-manager,Java,Swing,Jframe,Jpanel,Layout Manager,我试图将这两个JPanel添加到JFrame,但是只显示了frame,没有添加任何内容。任何人都可以帮助我,我缺少什么来添加这些面板 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();
JPanel
添加到JFrame
,但是只显示了frame,没有添加任何内容。任何人都可以帮助我,我缺少什么来添加这些面板
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);
}
}
import javax.swing.*;
导入java.awt.GridLayout;
公共类grid_Base扩展JFrame{
JFrame mainp=新JFrame();
JPanel p=新的JPanel();
JPanel p2=新的JPanel();
clickButtons按钮[]=新的clickButtons[100];
公共电网基础(){
超级战舰;
主设置尺寸(8001500);
mainp.setresizeable(真);
mainp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainp.setVisible(真);
p、 setLayout(新网格布局(10,10));
对于(int i=0;i<100;i++){
按钮[i]=新的点击按钮();
p、 添加(按钮[i]);
}
添加(p);
p2.设置布局(新网格布局(10,10));
对于(int i=0;i<100;i++){
按钮[i]=新的点击按钮();
p2.添加(按钮[i]);
}
主程序添加(p2);
}
}
setVisible(true)代码>上次,在您创建UI之后
JFrame
使用BorderLayout
作为默认布局,因此使用mainp.add(p)
,然后mainp.add(p2)
将隐藏p
,因为只有p2
将被布局JFrame
扩展(特别是因为您已经有了JFrame
的实例字段),这只会让它更加混乱您可以对代码进行这些更改,以便查看面板。更改值符合你的要求
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);
mainp.getContentPane().setLayout(null)//避免使用null
布局,像素完美的布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计初衷是与布局管理器一起工作,丢弃这些布局管理器将导致无止境的问题,您将花费越来越多的时间来纠正这些问题。请查看以了解更多详细信息