文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java深入学习图形用户界面GUI之创建窗体

2024-04-02 19:55

关注

GUI全程是Graphical User Interface,即图形用户界面。顾名思义,GUI就是可以让用户直接操作的图形化界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。目前,图形用户界面已经成为一种趋势,几乎所有的程序设计语言都提供了GUI设计功能。

Java针对GUI设计提供了丰富的类库,这些类分别位于java.awt和javax.swing包中,简称为AWT和Swing。AWT引入了大量的Windows函数,因此称为中重量级组件。Swing是以AWT为基础构建起来的轻量级的图形界面组件,在java的图形界面开发中使用更多,本文将对Swing相关知识进行讲解。

Swing概述:

Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包(AWT)为基础,使跨平台应用程序可以使用可插拔的外观风格。Swing拥有丰富的库和组件,使用非常灵活,开发人员只用很少的代码就可以创建出良好的用户界面。

在Java中,所有的Swing组件都保存在javax.swing包中,为了有效地使用Swing组件,必须了解Swing包的层次结构和继承关系。

Swing组件的所有类都继承自Container类,然后根据GUI开发的功能扩展了两个主要的分支,分别是容器分支和组件分支。其中,容器分支是为了实现图形化用户界面窗口的容器而设计的,而组件分支则是为了实现向容器中填充数据、元素和交互组件等功能。

在容器分支中,Swing组件类中有3个组件是继承的AWT的Window类,而不是继承自JComponent类,这3个组件是Swing中的顶级容器类,它们分别是JWindow、JFrame和JDialog。其中,JFrame和JDialog是最简单也是最常用的顶级容器,本文将对这两种顶级容器的基本使用方法进行详细讲解。

JFrame,它是一个独立存在的顶级容器(也称窗口),不能放置在其他容器中。JFrame支持通用窗口的所有基本功能,例如窗口最小化、设定窗口大小等。

JFrame案例:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class GUI_1JFrame常用方法 extends JFrame {
    public static void main(String[] args) {
        //使用SwingUtilities工具调用createAndShowGUI()方法显示GUI程序
        SwingUtilities.invokeLater(GUI_1JFrame常用方法::createAndShowGUI);
    }
    private static void createAndShowGUI() {
        //创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameText");
        //设置并关闭窗口时的默认操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口
        frame.setTitle("窗口");
        //设置窗口尺寸
        frame.setSize(350, 300);
        //设置窗口显示位置
        frame.setLocation(300, 200);
        //让组件显示
        frame.setVisible(true);
        //改变窗口图标
        Image image;
       try{ image= ImageIO.read(new File("图片路径"));
           frame.setIconImage(image);
       }catch (IOException e){
           e.printStackTrace();
       }
        //获取
       System.out.println(frame.getTitle());
 }
}

JDialog,它是Swing的另一个顶级容器,它与Dialog一样都表示对话框窗口。JDialog对话框可分为两种,分别是模态对话框和非模态对话框。模态对话框是指用户需要处理完当前对话框后才能继续与其他窗口交互对话框,而非模态对话框是允许用户处理对话框的同时与其他窗口交互的对话框。

JDialog案例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class jdialog {
    public static void main(String[] args) {
        //建立两个按钮
        JButton btn1=new JButton("模态对话框");
        JButton btn2=new JButton("非模态对话框");
        //创建并设置JFrame容器窗口
        JFrame f=new JFrame("DialogDemo");
        //设置窗口尺寸
        f.setSize(300,250);
        //设置窗口显示位置
        f.setLocation(300,200);
        f.setLayout(new FlowLayout());//为内容面板设置布局管理器
        //在Container对象上添加按钮
        f.add(btn1);
        f.add(btn2);
        //设置单击关闭按钮默认关闭窗口
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //让组件显示
        f.setVisible(true);
        final JLabel label=new JLabel();
        //定义一个JDialog对话框
        final JDialog dialog=new JDialog(f,"Dialog");
        dialog.setSize(220,150);//设置对话框大小
        dialog.setLocation(350,250);//设置对话框位置
        dialog.setLayout(new FlowLayout());//设置布局管理器
        final JButton btn3=new JButton("确定");//创建按钮对象
        dialog.add(btn3);//在对话框的内容面板添加按钮
        //为“模态对话框”按钮添加单击事件
        btn1.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //设置对话框为模态
                dialog.setModal(true);
                //如果JDialog窗口中没有添加JLabel标签,就把JLabel标签加上
                if(dialog.getComponents().length==1){
                    dialog.add(label);
                }
                //否则修改标签的内容
                label.setText("模态对话框,单击确定按钮关闭");
                //显示对话框
                dialog.setVisible(true);
            }
        });
        //为“非模态对话框”按钮添加单击事件
        btn2.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //设置对话框为非模态
                dialog.setModal(false);
                //如果JDialog窗口中没有添加JLabel标签,就把JLabel标签加上
                if(dialog.getComponents().length==1){
                    dialog.add(label);
                }
                //否则修改标签的内容
                label.setText("非模态对话框,单击确定按钮关闭");
                //显示对话框
                dialog.setVisible(true);
            }
        });
        //为对话框中的按钮添加单击事件
        btn3.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.dispose();
            }
        });
    }
}

补充小知识:JPanel

扩展上面的JFrame案例

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class GUI_1常用方法 extends JFrame {
    public static void main(String[] args) {
        //使用SwingUtilities工具调用createAndShowGUI()方法显示GUI程序
        SwingUtilities.invokeLater(GUI_1常用方法::createAndShowGUI);
    }
    private static void createAndShowGUI() {
        //创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameText");
        //设置并关闭窗口时的默认操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口
        frame.setTitle("窗口");
        //设置窗口尺寸
        frame.setSize(350, 300);
        //设置窗口显示位置
        frame.setLocation(300, 200);
        //让组件显示
        frame.setVisible(true);
        //改变窗口图标
        Image image;
       try{ image= ImageIO.read(new File("图片路径"));
           frame.setIconImage(image);
       }catch (IOException e){
           e.printStackTrace();
       }
        //获取
       System.out.println(frame.getTitle());
        //创建JPanel对象
        JPanel jp=new JPanel();
        //设置字体大小
        Font font=new Font("仿宋",Font.BOLD,20);
        //JLabel() ==>创建一个没有图像的 JLabel实例,为空字符串。
        //JLabel(String text) ==>使用指定的文本创建一个 JLabel实例。
        JLabel jl1=new JLabel("用户名:");
        jl1.setFont(font);//设置统一的字体,看起来更美观整齐
        //JTextField(String text) ==>构造一个新的 TextField ,用指定的文本初始化。
        JTextField jf1=new JTextField("请输入用户名:",20);
        jf1.setFont(font);//设置统一的字体
        JLabel jl2=new JLabel("密码:");
        jl2.setFont(font);//设置统一的字体
        JTextField jf2=new JTextField("请输入密码:",20);
        jf2.setFont(font);//设置统一的字体
        //建立按钮
        JButton jb1=new JButton("登录");
        jb1.setFont(font);//设置统一的字体
        JButton jb2=new JButton("退出");
        jb2.setFont(font);//设置统一的字体
        //将这些文本和按钮添加到JPanel对象中,然后再将JPanel对象添加到JFrame对象中去
        jp.add(jl1);
        jp.add(jf1);
        jp.add(jl2);
        jp.add(jf2);
        jp.add(jb1);
        jp.add(jb2);
        frame.add(jp);
        //让组件显示
        frame.setVisible(true);
    }
}

到此这篇关于Java深入学习图形用户界面GUI之创建窗体的文章就介绍到这了,更多相关Java GUI创建窗体内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯