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

catspeake
TA贡献1111条经验 获得超0个赞
你的类名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类 } } |

ibeautiful
TA贡献1993条经验 获得超6个赞
JFrame默认的布局管理器是BorderLayout,你在往JFrame中添加面板的时候,如果不指定方向,会默认往Center中添加,这就显示的和你期望的有出入。
两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。
添加回答
举报
0/150
提交
取消