运用setLayout布局的时候为什么会报下面这种错,求解

ThemethodsetLayout(LayoutManager)inthetypeContainerisnotapplicable... The method setLayout(LayoutManager) in the type Container is not applicable 展开
 我来答
紫薇参星
科技发烧友

2018-08-12 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3592万
展开全部

你的类名FlowLayout与类库中的类名FlowLayout冲突了,程序在setLayout时不知用哪个,就用了你定义的FlowLayout类,所以出错.

改正方法是把你定义的类的类名改成MyFlowLayout,构造函数改成public MyFlowLayout(),注意你的Java代码的文件名也要改成MyFlowLayout.java以与你的类名匹配.

完整的Java程序如下(改动的地方见注释)

MyFlowLayout.java

import java.awt.Frame;

import java.awt.FlowLayout;//这里引入FlowLayout类

import java.awt.Button;    //这里引入Button类

//import java.awt.LayoutManager;//这里去掉这句

//import javax.swing.JFrame;//这里去掉这句

public class MyFlowLayout{ //这里把FlowLayout类改成MyFlowLayout类

 public MyFlowLayout(){ //这里把FlowLayout构造函数改成MyFlowLayout构造函数

  Frame jFrame=new Frame();

  jFrame.setSize(400,300);

  jFrame.setLocation(20,20);//这里把Frame位置放上面一点,把200改成20

  jFrame.setBackground(Color.LIGHT_GRAY);

  jFrame.setLayout(new FlowLayout());

  for(int i=0;i<=7;i++){

   jFrame.add(new Button("按钮"));

  }

  jFrame.setVisible(true);

 }

 public static void main(String[] args){

  new MyFlowLayout();//这里把FlowLayout类改成MyFlowLayout类

 }

}
l7722526
2018-08-12 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3773万
展开全部
JFrame默认的布局管理器是BorderLayout,你在往JFrame中添加面板的时候,如果不指定方向,会默认往Center中添加,这就显示的和你期望的有出入。
两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。
追问
兄弟,你这个回答。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式