3 回答

TA貢獻1813條經驗 獲得超2個贊
程序主類MainFrame繼承自JFrame,然后又來了個成員JFrame frame;,你到底想用誰來顯示?
如果主類繼承自JFrame,一般情況下在main函數中new 一個主類實例就可以了,這個實例就是個JFrame,可以作為主界面。
如果主類沒有繼承自JFrame,那需要在類成員里設置一個JFrame型的成員,new之,再setVisible(true)之。
你全做了。。。。
你的mainframe()函數用的反倒還是父類JFrame的功能。那你的那個JFrame型的frame做什么用的?
至于你提的問題,你已經將窗口設置為FlowLayout布局了,那么就得按FlowLayout的規則去設置界面。在FlowLayout布局下,每個組件的大小是自動取最合適(其實是最合適的小)的。你自己調用的setSize、setLocation、setBounds都不會有效的。
這三個函數只在自定義布局下有效,也就是:先setLayout(null)l;,但這樣一來,你所有其它組件也必須使用這三個函數設置大小和位置了,很麻煩。
java中的布局不是那么簡單的。如果單做代碼就想構造好界面,沒有2、3年功力做不到的。

TA貢獻1842條經驗 獲得超13個贊
至于為什么setBounds()沒有效果的原意是:
你用了setLayout(FlowLayout())。
這樣一來,FlowLayout中所定義的Bounds屬性會覆蓋掉你自己的Bounds屬性。所以你的setBounds()函數就不起作用了。
解決辦法:
(1)用FlowLayout默認的Bounds屬性;
(2)setLayout(null);然后再設置setBounds();
當然,第二種方法會沒有布局管理器。
呵呵~~哪種方法你自己衡量一下吧!
- 3 回答
- 0 關注
- 3028 瀏覽
添加回答
舉報