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
提交
取消