猿问

为什么会报下面这种错,求解?

The method setLayout(LayoutManager) in the type Container is not applicable

慕标琳琳
浏览 215回答 2
2回答

catspeake

你的类名FlowLayout与类库中的类名FlowLayout冲突了,程序在setLayout时不知用哪个,就用了你定义的FlowLayout类,所以出错.改正方法是把你定义的类的类名改成MyFlowLayout,构造函数改成public MyFlowLayout(),注意你的Java代码的文件名也要改成MyFlowLayout.java以与你的类名匹配.完整的Java程序如下(改动的地方见注释)MyFlowLayout.javaimport&nbsp;java.awt.Frame;&nbsp;import&nbsp;java.awt.FlowLayout;//这里引入FlowLayout类&nbsp;import&nbsp;java.awt.Button;&nbsp;&nbsp;&nbsp;&nbsp;//这里引入Button类&nbsp;//import&nbsp;java.awt.LayoutManager;//这里去掉这句&nbsp;//import&nbsp;javax.swing.JFrame;//这里去掉这句&nbsp;public&nbsp;class&nbsp;MyFlowLayout{&nbsp;//这里把FlowLayout类改成MyFlowLayout类&nbsp;&nbsp;public&nbsp;MyFlowLayout(){&nbsp;//这里把FlowLayout构造函数改成MyFlowLayout构造函数&nbsp;&nbsp;&nbsp;Frame&nbsp;jFrame=new&nbsp;Frame();&nbsp;&nbsp;&nbsp;jFrame.setSize(400,300);&nbsp;&nbsp;&nbsp;jFrame.setLocation(20,20);//这里把Frame位置放上面一点,把200改成20&nbsp;&nbsp;&nbsp;jFrame.setBackground(Color.LIGHT_GRAY);&nbsp;&nbsp;&nbsp;jFrame.setLayout(new&nbsp;FlowLayout());&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i<=7;i++){&nbsp;&nbsp;&nbsp;&nbsp;jFrame.add(new&nbsp;Button("按钮"));&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;jFrame.setVisible(true);&nbsp;&nbsp;}&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args){&nbsp;&nbsp;&nbsp;new&nbsp;MyFlowLayout();//这里把FlowLayout类改成MyFlowLayout类&nbsp;&nbsp;}&nbsp;}

ibeautiful

JFrame默认的布局管理器是BorderLayout,你在往JFrame中添加面板的时候,如果不指定方向,会默认往Center中添加,这就显示的和你期望的有出入。两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。
随时随地看视频慕课网APP
我要回答