Java第十一章Swing一

1.1Swing概述:

Swing被称为轻量级组件,因为它是由Java编写的Java是不依赖于操作系统的语言,相反,重量级组件是依赖于本地平台的组件
常用Swing组件概述

在这里插入图片描述

1.2常用窗体

1.2.1JFrame窗体

//窗体作为Swing组件应用程序的重要载体处于非常重要的位置,Swing常用的窗体包括JFrame和JDialog
//JFrame窗体是一个容器,可将JFrame窗体看做是承载这些组建的容器,开发时可以通过继承java.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件添加时间,由于该窗体继承了JFrame类,它用有最大化、最小化、关闭等按钮。
//语法如下:
JFrame jf=new JFrame(title);
Container container=jf.getContainerPane();
//jf:JFrame类的对象
//container: Container类的对象,可以使用jf对象调用getContainerPane()方法获得
//通俗地说,在JFrame对象创建·完毕之后,调用getContainerPane()方法将窗体转换为容器
//在容器中添加组件
container.add(new JButton("按钮"));
//删除组件
container.remove(new JButton("按钮"));

package 拍;

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

public class Example1 extends JFrame {     //定义一个类继承JFrame类
public void CreateJFrame(String title){    //定义一个CreateJFrame()方法
    JFrame jf=new JFrame(title);   //实例化一个JFrame对象
    Container container=jf.getContentPane();      //获取一个容器
    JLabel jl=new JLabel("这是一个JFrame窗体");   //创建一个JLable标签
    jl.setHorizontalAlignment(SwingConstants.CENTER);   //使标签文字居中
    container.add(jl);   //给容器添加标签
    container.setBackground(Color.blue); //设置容器背景颜色
    jf.setVisible(true);  //使窗体可见
    jf.setSize(200,150);  //设置窗体大小
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  //设置窗体关闭方式
}
public static void main(String args[]){  //在主方法中调用方法
    new Example1().CreateJFrame("创建一个JFrame窗体");
}
}

在这里插入图片描述

//JFrame常用的构造方法有俩种
public JFrame()
public JFrame(String title)
//第一种方法可以创建一个初始不可见,没有标题的新窗体。第二种方法实例化该对象时,可以创一个不可见但是具有标题的窗体,通过常使用setVisible(true)方法使窗体可见,和设置床体大小

1.2.2JDialog窗体

//JDialog窗体的功能是从一个窗体中弹出另一个窗体,它与JFrame窗体类似,使用时也需要调用getContainerPane()方法将窗体转换为容器,然后在容器中设置窗体的特型
//在程序中创建JDialog窗体通过需要实例化JDialog类,通常有以下几个方法
public JDialog();创建一个没有标题和父窗口的对话框
public JDialog(Frame f);创建一个指定父窗体的对话框,且没有标题
public JDialog(Frame f,boolean model);创建一个指定类型的对话框,只是指定了父窗口,但是没有指定标题
public JDialog(Frame f,String title);创建一个指定标题和父窗口的对话框
public JDialog(Frame f,String title,boolean model);给定一个指定标题、窗口和模式的对话框

package 拍;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class MyJDialog extends JDialog {
public MyJDialog(MyFrame frame){
    super(frame,"第一个JDialog窗体",true); //实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
    Container container=getContentPane();  //创建一个容器
    container.add(new JLabel("只是一个对话框"));  //在容器中添加标签
    setBounds(120,120,100,100);   //设置对话框窗体的大小
}

}
public class MyFrame extends JFrame{
public static void main(String args[]){
    new MyFrame();   //实例化MyJDialog类对象
}
public MyFrame(){
    Container container=getContentPane();  //创建一个容器
    container.setLayout(null);
    JLabel jl=new JLabel("这是一个JFrame窗体");   //在窗体中设置标签
    jl.setHorizontalAlignment(SwingConstants.CENTER);
    container.add(jl);
    JButton bl=new JButton("弹出对话框");  //定义一个按钮
    bl.setBounds(10,10,100,21);
    bl.addActionListener(new ActionListener() {   //为按钮添加鼠标单击事件
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            //使MyJDialog窗体可见
            new MyJDialog(MyFrame.this).setVisible(true);
        }
    });
    container.add(bl);   //将按钮添加到容器中
}
}

1.3标签组件与图标

//Swing中显示文本或是提示信息的方法使使用标签,它支持文本字符串和图标
//JLable的几种构造方式

在这里插入图片描述

1.3.1创建图标

//Swing中通过Icon接口来创建图标且创建时给定图标的一些特性,实现Icon接口的3个方法如下:
public int getIconHeight();
public int getIconWidth();
public void paintIcon(Component arg(),Graphics arg1,int arg2,int arg3)
//前俩个用来指明获取图标的长和宽,第三个用于实现在指定的位置画图
package 拍;

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

public class DrawIcon implements Icon {     //实现Icon接口
private int width;  //声明图标的宽和高
private int height;
public int getIconHeight(){  //实现getIconHeight()的方法
    return this.height;
}
public int getIconWidth(){
    return this.width;
}
public DrawIcon(int width,int height){  //定义构造方法
    this.height=height;
    this.width=width;
}
//实现paintIcon()方法
public void paintIcon(Component arg0,Graphics arg1,int x,int y){
    arg1.fillOval(x,y,width,height);  //绘制一个图形
}
public static void main(String args[]){
    DrawIcon icon=new DrawIcon(5,15);
    //创建一个标签,并设置标签上面的文字在标签中间
    JLabel j=new JLabel("测试",icon,SwingConstants.CENTER);
    JFrame jf=new JFrame();  //创建一个JFrame窗口
    Container c=jf.getContentPane();
}
}

1.3.2使用图片图标

//使用图片图片几种常用的构造方法如下:

在这里插入图片描述

1.4常用布局管理器

//布局管理器使程序员直接在容器中控制Swing组件的位置和大小;常用的布局管理器:流布局管理器、边界布局管理器、网格布局管理器

1.4.1绝对布局

//硬性指定组件在容器中的位置和大小;步骤如下:
Container.setLayout(null)方法取消布局管理器
Component.setBounds()方法设置每个组件的大小与位置(使窗体对象调用此方法,则x,y代表整个屏出现的位置,若是在窗体内部组件调用则是在窗体中)

package 拍;

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

public class AbsolutePosition extends JFrame {
public AbsolutePosition(){
    setTitle("本窗体使用绝对布局");  //设置窗体标题
    setLayout(null);  //使该窗体取消布局管理器
    setBounds(0,0,200,150);  //绝对定位窗体的位置坐标与大小
    Container c=getContentPane();  //创建容器对象
    JButton b1=new JButton("按钮1");
    JButton b2=new JButton("按钮2");
    b1.setBounds(10,30,80,30);  //设置按钮的位置和大小
    b2.setBounds(60,70,100,20);
    c.add(b1);  //将按钮添加到容器中
    c.add(b2);
    setVisible(true);  //使窗体可见
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //设置窗体关闭方式
}
public static void main(String args[]){
    new AbsolutePosition();
}
}

在这里插入图片描述

1.4.2流布局管理器

//流布局管理器使最基本的布局管理器,它使组件从左到右摆放,直至占据了这一行的所有空间,然后再向下移动一行,默认情况下,每行组件都是居中排列
FlowLayout.LEFT=0  //左对齐
FlowLayout.CENTER=1  //居中
FlowLayout.RIGHT=2  //右对齐
//常用的构造方法如下:
public FlowLayout()
public FlowLayout(int alignment)
public FlowLayout(int alignment,int horizGap,int vertGap)
//注意:手动收缩窗体大小自适应
package 拍;

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

public class FlowLayoutPosition extends JFrame {
public FlowLayoutPosition(){
    setTitle("本窗体使用流布局管理器");
    Container container=getContentPane();
    //设置组件流布局管理,使组件右对齐,且设置组件之间的水平间隔与垂直间隔
    setLayout(new FlowLayout(2,10,10));
    for (int i=0;i<10;i++){
        container.add(new JButton("button"+i));
    }
    setSize(300,200);
    setVisible(true);  //使窗体可见
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String args[]){
    new FlowLayoutPosition();
}
}

在这里插入图片描述

1.4.3边界布局管理器

//在不指定窗体布局的情况下,Swing组件的布局模式是边界布局管理器,区域控制可以使用BorderLayout类中成员变量来决定位置

在这里插入图片描述

1.4.4网格布局管理器

//网格布局管理器将容器划分为网格,每个组件大小都相同,从左上角开始,从左到右,从上到下,一次排列,每个组件都会填满网格
//常用的俩个构造方法如下:
public GridLayout(int rows,int columns)
public GridLayout(int rows,int columns,int horizGap,int vertGap)
//行参数和列参数只有一个能为0,int horizGap,int vertGap,指定网格之间的距离
package 拍;

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

public class GridLayoutPositon extends JFrame {
public GridLayoutPositon(){
    Container c=getContentPane();
    //设置网格布局管理器,设置7行4列的网格
    setLayout(new GridLayout(7,3,5,5));
    for (int i=0;i<20;i++){
        c.add(new JButton("button"+i)); //循环添加按钮
    }
    setSize(300,300);
    setTitle("这是一个网格布局管理器");
    setVisible(true);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String args[]){
    new GridLayoutPositon();
}

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值