java图形界面 setBounds()函数怎么没有效果呢?

importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;importjava.awt.FlowLayout... import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.FlowLayout;
import java.io.*;
public class MainFrame extends JFrame {

/**
* @param args
*/

JLabel Lab1,Lab2,Lab3,Lab4,Lab5,Lab6,Lab7;

JTextField Tex1,Tex2,Tex3,Tex4,Tex5;

JComboBox Comb1,Comb2,Comb3;

JButton Btn1,Btn2,Btn3;
JFrame frame=new JFrame("矩阵计算器");

JPanel panel;

public void mainframe()
{

Container cont=getContentPane();
cont.setLayout(new FlowLayout());
cont.setBackground(Color.blue);

String names1[]={"单目运算","双目运算","解线性方程(只有一解)"};
Lab1=new JLabel("矩阵计算器");
cont.add(Lab1);
Lab1.setBounds(300,20,400,40);

Lab2=new JLabel("请选择你要进行的矩阵运算:");
cont.add(Lab2);
Lab2.setBounds(30,60,400,40);

Comb1=new JComboBox(names1);
cont.add(Comb1);

Lab3=new JLabel("行");
cont.add(Lab3);

setVisible(true);
setSize(800, 600);
setLocation(300,20);

}
public static void main(String[] args) {

MainFrame a=new MainFrame();
a.mainframe();
}

}
展开
 我来答
Raymondguo008
2009-10-30 · TA获得超过1634个赞
知道小有建树答主
回答量:887
采纳率:100%
帮助的人:475万
展开全部
楼主的代码没有问题,别听他们瞎说!
至于为什么setBounds()没有效果的原意是:
你用了setLayout(FlowLayout())。
这样一来,FlowLayout中所定义的Bounds属性会覆盖掉你自己的Bounds属性。所以你的setBounds()函数就不起作用了。

解决办法:
(1)用FlowLayout默认的Bounds属性;
(2)setLayout(null);然后再设置setBounds();
当然,第二种方法会没有布局管理器。

呵呵~~哪种方法你自己衡量一下吧!
hanzsim
2009-10-30 · TA获得超过1540个赞
知道小有建树答主
回答量:922
采纳率:0%
帮助的人:1088万
展开全部
真有意思哦。。。
程序主类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年功力做不到的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朴素守中
2009-10-30 · TA获得超过239个赞
知道小有建树答主
回答量:216
采纳率:81%
帮助的人:80.5万
展开全部
setBounds()不能和布局器结合使用,用户只能使用一项,否则setBounds()就会失效
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
java孙东坡
2009-10-30
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
setLayout(null)
这个必须要写,将默认的布局设置为空才能使用绝对布局。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caryken
2009-10-30
知道答主
回答量:16
采纳率:0%
帮助的人:13.1万
展开全部
楼上说的很有道理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式