java中往JFrame添加Panel控件只显示一个,求解

public class MapGrid extends Panel {
//地图格子坐标
int x;
int y;
//格子颜色
Color color;

public void paint(Graphics g) {

g.setColor(color);
g.fill3DRect(x, y, 20, 20, true);
}
public MapGrid(int x,int y,Color color)
{
this.x=x;
this.y=y;
this.color=color;
}

}

public class Test {
public static void main(String[] args) {

JFrame frame=new JFrame();
frame.setBounds(200, 200, 300, 300);

//MapGrid继承Panel
MapGrid g1=new MapGrid(0,0,Color.gray);
MapGrid g2=new MapGrid(20,0,Color.blue);
MapGrid g3=new MapGrid(40,0,Color.green);

frame.add(g1);
frame.add(g2);
frame.add(g3);

frame.setVisible(true);
}

}

因为JFrame默认的布局管理器为BorderLayout,其默认添加在BorderLayout.CENTER上,以上你的代码,你是想要同时显示3个panel,可以按照以下来设置
farme.add(BorderLayout.NORTH,g1);
frame.add(BorderLayout.CENTER,g2);
frame.add(BorderLayout.SOUTH,g3);
若这样不能达到你的效果,还可以这样
JFrame frame = new JFrame(new FlowLayout());
frame.add(g1);
frame.add(g2);
frame.add(g3);
希望对你有帮助追问

我想画出这种效果的图,用你上面的那种做法,感觉做不了。。。

追答

我觉得你想要得到上面的这种效果,个人感觉思路有点不对

温馨提示:内容为网友见解,仅供参考
无其他回答

我在JFrame面板上加入了两个JPanel 为啥只能显示一个?
可能原因如下:你的JFrame宽度不够;JPanel两个重叠。测试:你可以将JPanel分别设置边框或者其他的主要是为运行之后可以看到。如果没有设置边框或者用来区分JPanel与JFrame的格式,运行之后是看不到JPanel的

java swing 在JPanel里添加多个JButton为什么只显示一个
1、检查下你设置的JPanel的布局方式,该种布局方式是否适合放置多个按钮 2、检查下你设置的按钮是否都是设置为可见状态,只有可见状态才能展示出来 3、JPanel的宽带和高度是否合适,因为添加多个的时候,有可能会导致按钮重叠。

为什么java中添加两个按钮到JFrame中只显示后一个?
jframe.add(jb4, BorderLayout.NORTH);jb5 = new JButton("中一");jb6 = new JButton("中二");JPanel jp = new JPanel();\/\/JPanel默认是流式布局 ,所以就是一个靠近一个的出来System.out.println(jp.getLayout());\/\/FlowLayout 流式布局jp.add(jb5);jp.add(jb6);jframe.add(jp,...

我在一个JFrame里add了两个JPanel,为什么只显示了一个,两个的位置没...
JFrame默认的布局管理器是BorderLayout ,一共五个区,每个区中只能放一个面板,

把一个 JPanel 放到另一个 JPanel 中为什么只显示了一个 把他们放到一...
你用的什么布局?也许是大的把小的遮盖住了用gridlayout(1,2);或者gridlayout(2,1);试试看

java如何使按钮自动填充满整个JPanel,一个JPanel里面就一个按钮。
import java.awt.GridLayout;import javax.swing.*;public class TestJpanel extends JFrame { public static void main(String [] arge){ new TestJpanel();} public TestJpanel(){ setBounds(10,10,400,400);JPanel panel = new JPanel();panel.setBackground(Color.RED);panel.setLayout(...

java里怎样在JFrame中把两个JPanel内容完全显示
扩大JFrame的大小.或者减少JPanel的内容 使用JScrollPane组件,把JTextArea, JTabel等添加上滚动条,多余数据可以拉滚动条查看 可以考虑是JTabbedPane(选项卡)组件, 把两个JPanel变成两个选项卡的内容 也可以使用卡片布局 ...简单的示范, 比如JTabel (表格)和JTextArea(文本框)内容太多, 直接显示不完全. ...

java中JFrame问题
,一个应用程序可以有多个窗口,但是一个JFrame里面只能有有一个窗口,JFrame是最高层的容器,不能添加JFrame了,其她的如JPanel那些部件是可以添加的

JFrame类中添加JPanel类显示不出来,要怎么办?
最好是用JLabel,把控件加到JLabel上面,换的时候直接换JLabel就可以了,加背景图也方便

java swing frame调用panel模板却无法显示panel的内容
java.awt.Container java.awt.Window java.awt.Frame javax.swing.JFrame java.awt.Container javax.swing.JComponent javax.swing.JPanel 两个是不同级别的,一个是窗口类,一个是组件容器类。 你可以用的JFrame来装载Jpanel。使用的方法就是this.container.add(JPanel)

相似回答