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条经验 获得超12个赞
至于为什么setBounds()没有效果的原意是:
你用了setLayout(FlowLayout())。
这样一来,FlowLayout中所定义的Bounds属性会覆盖掉你自己的Bounds属性。所以你的setBounds()函数就不起作用了。
解决办法:
(1)用FlowLayout默认的Bounds属性;
(2)setLayout(null);然后再设置setBounds();
当然,第二种方法会没有布局管理器。
呵呵~~哪种方法你自己衡量一下吧!
- 3 回答
- 0 关注
- 2909 浏览
添加回答
举报