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();
}
} 展开
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();
}
} 展开
5个回答
展开全部
楼主的代码没有问题,别听他们瞎说!
至于为什么setBounds()没有效果的原意是:
你用了setLayout(FlowLayout())。
这样一来,FlowLayout中所定义的Bounds属性会覆盖掉你自己的Bounds属性。所以你的setBounds()函数就不起作用了。
解决办法:
(1)用FlowLayout默认的Bounds属性;
(2)setLayout(null);然后再设置setBounds();
当然,第二种方法会没有布局管理器。
呵呵~~哪种方法你自己衡量一下吧!
至于为什么setBounds()没有效果的原意是:
你用了setLayout(FlowLayout())。
这样一来,FlowLayout中所定义的Bounds属性会覆盖掉你自己的Bounds属性。所以你的setBounds()函数就不起作用了。
解决办法:
(1)用FlowLayout默认的Bounds属性;
(2)setLayout(null);然后再设置setBounds();
当然,第二种方法会没有布局管理器。
呵呵~~哪种方法你自己衡量一下吧!
展开全部
真有意思哦。。。
程序主类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年功力做不到的。
程序主类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年功力做不到的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setBounds()不能和布局器结合使用,用户只能使用一项,否则setBounds()就会失效
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setLayout(null)
这个必须要写,将默认的布局设置为空才能使用绝对布局。
这个必须要写,将默认的布局设置为空才能使用绝对布局。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询