2015-06-19 37 views
-1
public void init_numSolvers() { 
    for (x = 0; x < 9; x++) { 
     n++; 
     num[x] = new Button("" + n); 
     add(num[x]); 
     num[x].setBounds(num_x, num_y, 40, 40); 
     setLayout(null); 
     num_x += 40; 
    } 

爲什麼的setBounds()函數不無setLayout的(空)工作,我只是想了解的setLayout的主要目的(空)函數setLayout的功能主要目的

回答

4

您將要閱讀教程和因爲他們清楚地說明什麼的setBounds和setLayout的做法,但簡單的API:

  • setLayout(...)方法允許你設置的容器,經常一個JPanel,說的FlowLayout,BorderLayout的,網格佈局,空佈局的佈局,或者任何想要的佈局。佈局管理器幫助佈置此容器所持有的組件。
  • setBounds(...)方法用於設置單個組件的位置和大小,並且僅在容納此組件的容器使用null佈局時纔有用。
  • 當您將佈局設置爲null時,您告訴容器它完全不使用佈局,因此程序員因此完全負責設置添加到此容器的組件的所有大小和位置。
  • 話雖如此,你應該努力避免使用null佈局和setBounds(...)。雖然對於新手Swing程序員來說,這似乎是創建複雜佈局的最簡單方法,但使用它們時,您只需在一個平臺上創建GUI即可。更重要的是,他們創建的GUI幾乎不可能維護和升級而不會造成微妙的錯誤。如果可能,請不要使用它們。
  • 請在此閱讀official layout manager tutorials,因爲它在那裏有很好的解釋。

請注意,您的代碼可重複設置容器的佈局爲空內的for循環。我不知道爲什麼它重複執行此操作,因爲您只需要並且想要設置一個容器的佈局一次

+0

謝謝你....我感謝你的幫助:D –