JAVA图形界面中的容器和布局管理

    技术2022-07-13  63

    准备用几篇文章把JAVA的图形界面知识点整理出来; 这一片主要说一下JAVA中的容器和布局; 首先放在开头的是,写图形界面编程要加上这两行代码;

    import java.awt.*; import javax.swing.*;

    不然可不好使; 一、顶层容器JFrame

    首先在屏幕上显示的所有组件必须包含在某个容器中,而有些容器是可以嵌套的,在这个嵌套层次的最外层,必须是一个顶层容器;Swing中提供了四种; JFrame:一个带有标题行,控制按钮的独立窗口; JApplet:创建小程序时使用; JDialog:创建对话框时使用; JWindow:不带标题和控制按钮的窗口;

    这里主要说一下JFrame的用法; 看例子来说明;

    public static void main(String[] args) { JFrame frame=new JFrame("Demo");//构造方法显示标题 JButton button=new JButton("Press me");//构造方法显示按钮标题 frame.getContentPane().add(button,BorderLayout.CENTER);//添加按钮 frame.pack();//调整窗口 frame.setVisible(true);//显示到屏幕上 }

    那,这里面只要知道前两行的具体意思就行; 通过构造方法设置标题; 看一下运行结果: 只要知道怎么用JFrame就可以了先; 之后我们再继续;

    二、内容窗格

    每个顶层容器都有一个内容窗格,实际上,顶层容器除了菜单之外的组件全都放在这个内容窗格上。将组件放入内容窗格有两种方法; 1,

    public static void main(String[] args) { JFrame frame=new JFrame("Demo"); JButton button=new JButton("Press me"); Container contentPane=frame.getContentPane(); contentPane.add(button,BorderLayout.CENTER); frame.pack(); frame.setVisible(true); }

    其中的Container contentPane=frame.getContentPane(); contentPane.add(button,BorderLayout.CENTER); 可以换成上个例子中的frame.getContentPane().add(button,BorderLayout.CENTER);

    这回能理解代码中的四五行了吧,就是向内容窗格中添加控件;

    2,第二种方法是使用JPanel,下个点就会说;

    三、面板JPanel;

    面板是一种用途广泛的容器,但是与顶层容器不同的是,面板不能独立存在,必须添加到其他容器内部,面板可以嵌套,由此可以设计出复杂的图形用户界面; 我们还是通过例子来说明;

    public static void main(String[] args) { JFrame frame=new JFrame("Frame with panel"); frame.getContentPane().setBackground(Color.CYAN);//设置背景色 JPanel panel=new JPanel(); panel.setBackground(Color.yellow);//创建面板设置背景色 JButton button=new JButton("Press me"); panel.add(button,BorderLayout.CENTER);//向面板添加按钮 frame.add(panel,BorderLayout.SOUTH);//向容器添加面板 frame.setSize(200, 200);//设置窗口大小 frame.setVisible(true);//显示 }

    面板本身就是一个容器,所以自然可以放组件,面板又不能独立存在所以得放在容器内部; 这就是面板的使用方法; 看一下运行结果:

    四、FlowLayout布局

    在默认情况下,FlowLayout将组件居中放置在某一行上。 FlowLayout有三种构造方法要知道;

    public FlowLayout(int,int,int) public FlowLayout(int) public FlowLayout()

    我们用例子来说明,例子中用的是最后无参的构造函数;

    public static void main(String[] args) { JFrame frame=new JFrame("Frame with panel"); JButton b1,b2,b3,b4; b1=new JButton("b1"); b2=new JButton("b2"); b3=new JButton("b3"); b4=new JButton("b4"); frame.getContentPane().setLayout(new FlowLayout());//使用FlowLayout布局 frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.setSize(200,200); frame.setVisible(true); }

    很简单吧,看一下运行结果;

    五、BorderLayout布局;

    它是顶层容器中内容窗格的默认布局管理,它提供了一种较为复杂的布局管理方案,每个由BorderLayout管理的容器被分为东西南北中共5个区域(如果仔细看了之前的例子,会发现有这个布局的),分别用常量BorderLayout.NORTH或“North”等来表示

    看一下构造方法: BorderLayout(); BorderLayout(int,int);

    我们还是用例子来说明

    public static void main(String[] args) { JFrame frame=new JFrame("Frame with panel"); JButton b1,b2,b3,b4,b5; b1=new JButton("b1"); b2=new JButton("b2"); b3=new JButton("b3"); b4=new JButton("b4"); b5=new JButton("b5"); frame.getContentPane().setLayout(new BorderLayout());//使用BorderLayout布局 frame.add(b1,BorderLayout.WEST); frame.add(b2,BorderLayout.NORTH); frame.add(b3,BorderLayout.EAST); frame.add(b4,BorderLayout.SOUTH); frame.add(b5,BorderLayout.CENTER);//五个方位添加按钮 frame.setSize(200,200); frame.setVisible(true); }

    也很好理解吧; 看一下运行截图;

    六、GridLayout布局

    GridLayout是一种网格试的布局管理器,他讲容器空间划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格; 看一下他的构造方法: GridLayout(); GridLayout(int,int); GridLayout(int,int,int,int);

    依旧是用例子来说明他的用法;

    public static void main(String[] args) { JFrame frame=new JFrame("Frame with panel"); JButton b1,b2,b3,b4,b5,b6; b1=new JButton("b1"); b2=new JButton("b2"); b3=new JButton("b3"); b4=new JButton("b4"); b5=new JButton("b5"); b6=new JButton("b6"); frame.getContentPane().setLayout(new GridLayout(2,3));//划分为两行三列的布局 frame.add(b6); frame.add(b5); frame.add(b4); frame.add(b3); frame.add(b2); frame.add(b1); frame.setSize(200,400); frame.setVisible(true); }

    是不是都非常好理解;

    最后看一下运行截图;

    关于容器和布局管理只整理这些了,这三种布局方法比较常用,当然还有一些其他的布局方法就需要自己去查阅资料掌握了! OK,end 结束

    Processed: 0.018, SQL: 9