ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Day27图形界面的布局管理

2021-06-09 23:29:24  阅读:160  来源: 互联网

标签:container 图形界面 布局 JButton public add import new Day27


学习目标

图形界面的布局管理

(1):对话框
(2):面板
(3):布局
(4):单/多选按钮
(5):列表

学习内容

(1):对话框

package Demo01;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;

public class DialogDemo01 extends JDialog {

    public DialogDemo01(JFrame jframe) {
        super(jframe,false);
        this.setBounds(100,100,500,500);

        Container container = this.getContentPane();
        container.setLayout(null);
//        container.add(new Label("大数据五班"));
        JButton button = new JButton("我是五班");
        button.setBounds(30,30,200,50);
        container.add(button);
    }

    public static void main(String[] args) {
        JFrame j = new JFrame();
        j.setVisible(true);
        j.setBounds(100,100,700,500);
        j.setDefaultCloseOperation(EXIT_ON_CLOSE);

        Container container = j.getContentPane();
        container.setLayout(null);

        JButton button = new JButton("我要登录");
        button.setBounds(30,30,200,50);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e){
                DialogDemo01 s = new  DialogDemo01(j);
                s.setVisible(true);
                System.out.println("我被点击了");

            }
        });
        container.add(button);
    }
}

结果为:
在这里插入图片描述

(2):面板

JPanel
面板组件,非顶层容器。

一个界面只可以有一个JFrame窗体组件,但是可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout,BorderLayout,GridLayout等各种布局管理器,这样可以组合使用,达到较为复杂的布局效果。
例如:

package Demo02;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


//面板作为容器不能单独存在,必须放到其他容器里面JFrame,JDialog
	public class JPaneDemo extends JFrame {
	public JPaneDemo() {
	Container container = this .getContentPane();
	container.setLayout((new GridLayout( 2,1,10,10)));
	JPanel panel = new JPanel(new GridLayout(1, 3));
	panel.add(new JButton("颜"));
	panel.add(new JButton("悦"));
	panel.add(new JButton("扬"));
	container.add(panel) ;
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	this.setVisible(true);
	this.setBounds(100,100,500,500);
	}
	public static void main(String[] ange) {
	new JPaneDemo();
	
	}

}

结果为:
在这里插入图片描述
JScrollPane
滚动面板。JScrollPane 支持水平和垂直滚动视图。文本区域、表格等需要显示较多数据而空间又有限时,通常使用 JScrollPane 进行包裹以实现滚动显示。

JScrollPane 内包含一个视口(ViewPort),表示 JScrollPane 的显示区域。视口内包含一个需要滚动显示的组件,称为视图。
例如:

package Demo02;

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

//面板作为容器不能单独存在,必须放到其他容器里面JFrame,JDialog
public class JScrollDemo extends JFrame {
    public JScrollDemo(){
        Container container = this.getContentPane();
        //文本域
        JTextArea textarea =new JTextArea(20,50);
        textarea.setText("大数据五班,这是颜悦扬的世界,充满粉色泡泡");

        //scroll面板
        JScrollPane scrollPane =new JScrollPane(textarea);
//        JPanel scrollPane =new JPanel();
//        scrollPane.add(textarea);
        container.add(scrollPane);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setBounds(100,100,500,500);

    }

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

结果为:在这里插入图片描述

(3):布局

FlowLayout(流式布局)
java.lang.Object

–java.awt.FlowLayout

组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行。

构造函数:

FlowLayout()

建立一个默认为居中对齐,组件彼此有5单位的水平与垂直间距的FlowLayout

FlowLayout(int align)

建立一个可设置排列方式且组件彼此有5单位的水平与垂直间距的FlowLayout

FlowLayout(int align,int hgap,int vgap)

建立一个可设置排列方式与组件间距的FlowLayout
例如:

package Demo03;

import java.awt.FlowLayout;
import java.awt.LayoutManager;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TestFlowLayout2  {
        
	public static void main(String[] args) {
	JFrame j=new JFrame();
	j.setVisible(true);
	j.setBounds(100,100,700,500);
	j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	j.setLayout(new FlowLayout());
	
	JButton button1= new JButton("button1");
	JButton button2= new JButton("button2");
	JButton button3= new JButton("button3");
	JButton button4= new JButton("button4");
	JButton button5= new JButton("button5");
	JButton button6= new JButton("button6");
	j.add(button1);
	j.add(button2);
	j.add(button3);
	j.add(button4);
	j.add(button5);
	j.add(button6);

}
}

结果为:
在这里插入图片描述
GridLayout(网格布局)

java.lang.Object

–java.awt.GridLayout

矩形网格形式对容器的组件进行布置

构造函数:

GridLayout()

建立一个默认为一行一列的GridLayout

GridLayout(int rows,int cols)

建立一个指定行(rows)和列(cols)的GridLayout

GridLayout(int rows,int cols,int hgap,int vgap)

建立一个指定行(rows)和列(cols),且组件间水平间距为hgap、垂直间距为vgap的GridLayout
例如:

package Demo03;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TestGrid {
	public static void main(String[] args) {
	JFrame j=new JFrame();
	j.setVisible(true);
	j.setBounds(100,100,700,500);
	j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	j.setLayout(new GridLayout(3,2));
	JButton button1= new JButton("button1");
	
	JButton button2= new JButton("button2");
	JButton button3= new JButton("button3");
	JButton button4= new JButton("button4");
	JButton button5= new JButton("button5");
	//JButton button6= new JButton("button6");
	j.add(button1);
	j.add(button2);
	j.add(button3);
	j.add(button4);
	j.add(button5);
	//j.add(button6);
	j.pack();
}
}

结果为:
在这里插入图片描述
BorderLayout(边框布局)
java.lang.Object

–java.awt.BorderLayout

将版面划分成东、西、南、北、中五个区域,将添加的组件按指定位置放置。

BorderLayout.EAST
BorderLayout.WEST
BorderLayout.SOUTH
BorderLayout.NORTH
BorderLayout.CENTER

构造函数:

BorderLayout()

建立组件间无间距的BorderLayout

BorderLayout(int hgap,int vgap)

建立组件间水平间距为hgap,垂直间距为vgap的BorderLayout
例如:

package Demo03;

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

import static javax.swing.WindowConstants.EXIT_ON_CLOSE;

//边界布局
public class TestBorderLayout {
    public static void main(String[] args) {
        JFrame j = new JFrame();
        j.setVisible(true);
        j.setBounds(100,100,700,500);


        JButton east = new JButton("east");
        JButton west = new JButton("west");
        JButton south = new JButton("south");
        JButton north = new JButton("north");
        JButton center = new JButton("中心");

        j.add(east,BorderLayout.EAST);
        j.add(west,BorderLayout.WEST);
        j.add(south,BorderLayout.SOUTH);
        j.add(north,BorderLayout.NORTH);
        j.add(center,BorderLayout.CENTER);


    }
}

结果为:
在这里插入图片描述

(4):单/多选按钮

单选按钮和复选按钮——实现单选和多选的操作

关键词JCheckBox和JRadioButton 这两个是选择框,一般默认JradioButton是单选
JRadioButton默认单选框,但是需要配合打包之后才能用,使用方法
主程序中定义ButtonGroup dxz;构造类中中将要单选的给add进去dxz=new ButtonGroup();dxz.add(dx1); dxz.add(dx2);
注意:
如果JRadionButton没有第二步的打包操作和复选框一样,都有多选功能,同样JCheckBox打包之后也只能单选、
并且选中和取消
选中一个 checkbox(复选框) 后,再次点击它,即可取消选中
选中一个 radio(单选按钮) 后,再次点击它,不能取消选中
例如:

package Demo04;

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

public class RadioButon extends JFrame {
    public RadioButon(){
        Container container = this.getContentPane();
        //单选框
       JRadioButton radioButton1 = new JRadioButton("JRadioButton1");
        JRadioButton radioButton2 = new JRadioButton("JRadioButton2");
        JRadioButton radioButton3 = new JRadioButton("JRadioButton3");
        JRadioButton radioButton4 = new JRadioButton("JRadioButton4");

        //在一个group里面只能有一个被选中
        ButtonGroup group = new ButtonGroup();
        group.add(radioButton1);
        group.add(radioButton2);
        group.add(radioButton3);



        container.add(radioButton1,BorderLayout.CENTER);
        container.add(radioButton1,BorderLayout.NORTH);
        container.add(radioButton1,BorderLayout.SOUTH);
        container.add(radioButton1,BorderLayout.EAST);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setBounds(100,100,500,500);

    }

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


结果为:
在这里插入图片描述
例如2:

package Demo04;

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

public class CheckBox extends JFrame {
    public CheckBox(){
        Container container = this.getContentPane();
        //多选框

        JCheckBox checkBox1 = new JCheckBox("自动登录");
        JCheckBox checkBox2 = new JCheckBox("记住密码");
        JCheckBox checkBox3= new JCheckBox("找回密码");

        container.add(checkBox1,BorderLayout.CENTER);
        container.add(checkBox2,BorderLayout.EAST);
        container.add(checkBox3,BorderLayout.WEST);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setBounds(100,100,500,500);

    }

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

结果为:
在这里插入图片描述

(5):列表

下拉列表
例如:

package Demo05;

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

public class TextComBoxDemo01 extends JFrame {
    public TextComBoxDemo01(){
        Container container = this.getContentPane();
        //下拉框
        JComboBox status = new JComboBox();
        status.addItem(null);
        status.addItem("正在学习");
        status.addItem("准备睡觉");
        status.addItem("看电视剧");
        status.addItem("熬夜写博客");
        container.add(status);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setBounds(100,100,500,500);

    }

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



结果为:
在这里插入图片描述
无下拉列表

package Demo05;


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

	public class TextComBoxDemo02 extends JFrame {
	    public TextComBoxDemo02(){
	        Container container = this.getContentPane();

	        Vector<Object> contens = new Vector();
//	        String[] contens = {"1","五班","Java"};
	        JList jList = new JList(contens);
	        contens.add("五班");
	        contens.add("颜悦扬");
	        contens.add("爱学习");
	        contens.add("看帅哥");

	        container.add(jList);

	        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	        this.setVisible(true);
	        this.setBounds(100,100,500,500);

	    }

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



结果为:
在这里插入图片描述
2020080605041

标签:container,图形界面,布局,JButton,public,add,import,new,Day27
来源: https://blog.csdn.net/m0_55689562/article/details/117755928

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有