MarioFei 2013-08-06 04:57 采纳率: 0%
浏览 2383

java awt 布局 下面panel 尺寸已经设定好了,为什么不按照流式布局添加 而是尺寸变了

package huatu;

import java.awt.*;
import java.awt.image.BufferedImage;

import javax.swing.BoxLayout;

public class num1 {
private Frame f=new Frame("绘图");
private Panel p=new Panel();
private MyCanvas board=new MyCanvas();
private MenuBar mb=new MenuBar();
private Menu mu=new Menu("文件");
private MenuItem [] mi=new MenuItem[5];
BufferedImage bi=new BufferedImage(500,300,BufferedImage.TYPE_INT_RGB);
Graphics g=bi.getGraphics();
Button b[]=new Button[20];
public num1()
{
mi[0]=new MenuItem("新建");
mi[1]=new MenuItem("保存");
mi[2]=new MenuItem("另存为");
mi[3]=new MenuItem("读取");
mi[4]=new MenuItem("关于画图");
p.setSize(150, 300);
for(int i=0;i<20;i++)
{
b[i]=new Button(i+"");
p.add(b[i]);
}

}
public void init()
{
    for(int i=0;i<5;i++)
    {
        mu.add(mi[i]);
    }
    mb.add(mu);
    f.setMenuBar(mb);


    board.setSize(400, 300);
    board.setBackground(Color.black);
    f.add(p,BorderLayout.WEST);
    f.add(board);



    f.pack();
    f.setVisible(true);

}
public static void main(String args[])
{
    new num1().init();
}
class MyCanvas extends Canvas
{
    public  void paint(Graphics g)
    {

    }
}

}

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-11 10:29
    关注

    这是因为在初始化时,p对象的尺寸已经被设置为150*300,而不是使用流式布局。因此,添加到p中的所有组件都会在这个固定尺寸的区域中显示,而不是自适应大小。如果要使用流式布局,需要将p的布局设置为FlowLayout,如:p.setLayout(new FlowLayout());。这样就会根据组件的大小来自动调整布局。

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名