【Java Swing】Java组件及事件处理

1、Swing概述

  • Swing是一种轻量级的组件,它由Java语言开发,可以通过使用简洁的代码、灵活的功能和模块化的组件来创建优雅的用户界面
  • Swing组建的继承关系
    在这里插入图片描述

2、Swing顶级容器

JFrame

  • JFrame是Swing最常见的一个组件,它是一个独立存在的顶级容器(也叫窗口),所以它不能放在其他的容器之中
import javax.swing.*;

public class JFrameTest {
   
   public static void showJrame() {
   
       //创建并且设置顶级窗口
       JFrame frame = new JFrame("JFrameTest");
       //设置关闭窗口的默认操作
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       //设置窗口的大小
       frame.setSize(500,400);
       //展示窗口
       frame.setVisible(true);
   }

   public static void main(String[] args) {
   
       //调用窗口程序
       SwingUtilities.invokeLater(JFrameTest::showJrame);
   }
}

JDialog

  • JDialog是Swing的另外一个顶级容器,通常用来表示对话框窗口,并且JDialog对话框可分为两种:模态对话框和非模态对话框,对话框是模态或者非模态,可以在创建JDialog对象时为构造方法传入参数来设置,也可以在创建JDialog对象后调用它的setModal()方法来进行设置。
  • 常见的构造方法

在这里插入图片描述

import javax.swing.*;

public class JDialogTest {
   
    public static void showJDialog(){
   
        //创建一个JFrame串口
        JFrame frame = new JFrame("JFrame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setSize(500,400);
        //设置JFrame居中对齐
        frame.setLocationRelativeTo(null);
        //创建一个属于frame的模态的JDialog窗口
        JDialog dialog = new JDialog(frame,true);
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        dialog.setSize(300,200);
        dialog.setVisible(true);
    }
    public static void main(String[] args) {
   
        SwingUtilities.invokeLater(JDialogTest::showJDialog);
    }
}

3、布局管理器

BorderLayout

  • BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是页头(PAGE_START)、页尾(PAGE_END)、行首(LINE_START)、行尾(LINE_END)、中部(CENTER)。组件可以被放置在这五个区域中的任意一个位置。
import javax.swing.*;
import java.awt.*;

public class BorderLayoutTest {
   
   public static void showBorderLayout() {
   
       //创建一个名为BorderLayout的顶级窗口
       JFrame frame = new JFrame("BorderLayout");
       //设置其布局管理器为BorderLayout
       frame.setLayout(new BorderLayout());
       frame.setSize(500, 300);
       frame.setLocationRelativeTo(null);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setVisible(true);
       //创建按钮组件放到BorderLayout的五个地方上
       frame.add(new JButton("按钮1"), BorderLayout.PAGE_START);
       frame.add(new JButton("按钮2"), BorderLayout.PAGE_END);
       frame.add(new JButton("按钮3"), BorderLayout.LINE_START);
       frame.add(new JButton("按钮4"), BorderLayout.CENTER);
       frame.add(new JButton("按钮5"), BorderLayout.LINE_END);
   }

   public static void main(String[] args) {
   
       SwingUtilities.invokeLater(BorderLayoutTest::showBorderLayout);
   }
}
  • 效果图
    在这里插入图片描述

FlowLayout(流式布局管理器)

  • 是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左向右放置,当到达容器的边界时,会自动将组件放到下一行的开始位置。这些组件可以按左对齐、居中对齐(默认方式)或右对齐的方式排列。
  • FlowLayout的构造方法
    在这里插入图片描述
import javax.swing.*;
import java.awt.*;

public class FlowLayoutTest {
   
   public static void showFlowLayout(){
   
       //定义一个名为FlowLayout的顶级窗口
       JFrame frame = new JFrame("FlowLayout");
       //设置布局管理器为FlowLayout,且对齐方式为左对齐,水平间距为20,垂直间距为30
       frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
       frame.setVisible(true);
       frame.setLocationRelativeTo(null);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setSize(500,400);
       //向容器添加组件
       for (int i = 0;i<5;i++){
   
           frame.add(new JButton("添加第"+(i+1)+"个按钮"));
       }
   }
   public static void main(String[] args) {
   
       SwingUtilities.invokeLater(FlowLayoutTest::showFlowLayout);
   }
}
  • 效果图
    在这里插入图片描述

GridLayout

  • GridLayout(网格布局管理器)使用纵横线将容器分成n行m列大小相等的网格,每个网格中可以添加一个组件。
    添加到容器中的组件会从左向右、从上向下依次填充到网格中。
    与FlowLayout不同的是,放置在GridLayout布局管理器中的组件将自动占据网格的整个区域
  • 常见的构造方法
    在这里插入图片描述
import javax.swing.*;
import java.awt.*;

public class GridLayoutTest {
   
    public static void showGridLayout(){
   
        //创建一个名为GridLayout的·1顶级窗口
        JFrame frame = new JFrame("GridLayout");
        //设置布局管理器为三行三列的GridLayout
        frame.setLayout(new GridLayout(3,3));
        frame.setSize(500, 300);
        frame.setLocationRelativeTo(null
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值