Java--GUI之窗体的创建和组件的添加

简介: 这里是 Java--GUI 系列文章,主要介绍Java中的图形化界面编程及其实现。Java的图形化界面编程除了在自学中可以直观地感受到效果,还会在考试的题目中察觉到重要性关于作者:小白(Libra),计算机兴趣爱好者,Java,C,Hadoop,MySQLEmail : hewei20031009@163.comGitHub : https://github.com/Regel-zack转载请注明出处

Swing

前言

这里是 Java--GUI 系列文章,主要介绍Java中的图形化界面编程及其实现。
Java的图形化界面编程除了在自学中可以直观地感受到效果,还会在考试的题目中察觉到重要性

关于作者:

转载请注明出处

正文

第一个JFrame窗口

忽略掉没讲到的内容会在后续涉及到

首先建立一个运行类,用来存放主方法

/**
 * Application 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:02
 * @author 别欺负小白了好咩
 */
public class Application {
    public static void main(String[] args) {
        MyFirstFrame test = new MyFirstFrame();
        test.drawFrame();
        test.drawFrame(200,300,50,100);
        test.drawFrame();
    }
}

其次建立一个窗体类,其中带有窗体实例化以及绘制窗体的方法

import javax.swing.*;
import java.awt.*;
/**
 * MyFirstFrame 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:04
 * @author 别欺负小白了好咩
 */
public class MyFirstFrame {
    int WIDTH;
    int HEIGHT;
    int LOCATION_X;
    int LOCATION_Y;

    JFrame f =  new JFrame("第一个Swing窗体");

    public void drawFrame(){
        f.setSize(300,100);
        f.setBackground(Color.WHITE);
        f.setLocation(500,500);
        f.setVisible(true);
        System.out.println("默认窗口已显示");
    }

    public void drawFrame(int WIDTH, int HEIGHT, int LOCATION_X, int LOCATION_Y) {
        f.setSize(WIDTH,HEIGHT); ;
        f.setBackground(Color.WHITE);
        f.setLocation(LOCATION_X,LOCATION_Y);
        f.setVisible(true);
        System.out.println("自定义窗口已显示");
    }
}

以上代码仅作参考代码,具体教学思路请对照下面来看
首先在窗体绘制后,我们可以指定窗体的大小,背景颜色,位置以及是否显示。
但是在打开多个窗口后(运行多次窗口绘制方法),只会出现一个窗口,具体原因是由于我们只实例化了一个窗口对象,其余的几次只是在那基础上做了一些参数的修改,以下代码实现了打开多个窗口

import javax.swing.*;
import java.awt.*;
/**
 * MyFirstFrame 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:04
 * @author 别欺负小白了好咩
 */
public class MyFirstFrame {
    int WIDTH;
    int HEIGHT;
    int LOCATION_X;
    int LOCATION_Y;



    public void drawFrame(){
        JFrame f =  new JFrame("这是默认窗口");
        f.setSize(300,100);
        f.setBackground(Color.WHITE);
        f.setLocation(500,500);
        f.setVisible(true);
        System.out.println("默认窗口已显示");
    }

    public void drawFrame(int WIDTH, int HEIGHT, int LOCATION_X, int LOCATION_Y) {
        JFrame f =  new JFrame("这是自定义窗口");
        f.setSize(WIDTH,HEIGHT); ;
        f.setBackground(Color.WHITE);
        f.setLocation(LOCATION_X,LOCATION_Y);
        f.setVisible(true);
        System.out.println("自定义窗口已显示");
    }
}

使用前面的方法会避免创建多余的窗口,具体看需求来选择如何实现。


JLabel 标签组件

可以将JFrame理解为一个盘子,那么盘子上自然就可以承载其他的物品(组件),而这些组件只需要放上去(add)就可以随着盘子一起呈现给用户了。

JLabel 类的常用方法和常量

序号 方法或常量 类型 作用
1 public static final int LEFT 常量 标签文本左对齐
2 public static final int CENTER 常量 标签文本居中对齐
3 public static final int RIGHT 常量 标签文本右对齐
4 public JLabel() throws HeadlessException 构造 创建一个JLabel对象
5 public JLabel(String text) throws HeadlessException 构造 创建一个标签并指定文本内容
6 public JLabel(String text,int alignment) throws HeadlessException 构造 创建一个标签并指定文本内容以及对齐方式,可以使用JLabel.LEFT 、JLabel.RIGHT、 JLabel.CENTER3个值
7 public JLabel(String text,Icon icon,int alignment) throws HeadlessException 构造 创建具有指定文本、图像和水平对齐方式的JLabel对象
8 public JLabel(Icon image,int alignment) 构造 创建具有指定图像和水平对齐方式的JLabel实例
9 public void setText(String text) 普通 设置标签的文本
10 public String getText() 普通 取得标签的文本
11 public void setAlignment(int alignment) 普通 设置标签对齐方式
12 public void setIcon(Icon icon) 普通 设置指定的图像

示例代码如下

import javax.swing.*;

/**
 * Application 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:02
 * @author 别欺负小白了好咩
 */
public class Application {
    public static void main(String[] args) {
        MyFirstFrame test = new MyFirstFrame();
        test.drawFrame();
        test.addJLabel(new JLabel("这是一个标签文本"),test.f);
    }
}
import javax.swing.*;
import java.awt.*;
/**
 * MyFirstFrame 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:04
 * @author 别欺负小白了好咩
 */
public class MyFirstFrame {
    int WIDTH;
    int HEIGHT;
    int LOCATION_X;
    int LOCATION_Y;
    JFrame f =  new JFrame("这是一个窗口");

    public void drawFrame(){
        f.setSize(300,100);
        f.setBackground(Color.WHITE);
        f.setLocation(500,500);
        f.setVisible(true);
        System.out.println("默认窗口已显示");
    }

    public void drawFrame(int WIDTH, int HEIGHT, int LOCATION_X, int LOCATION_Y) {
        f.setSize(WIDTH,HEIGHT); ;
        f.setBackground(Color.WHITE);
        f.setLocation(LOCATION_X,LOCATION_Y);
        f.setVisible(true);
        System.out.println("自定义窗口已显示");
    }

    public void addJLabel(JLabel jLabel,JFrame jFrame){
        jFrame.add(jLabel);
        System.out.println("标签组件已添加完毕!");
    }

}
其中标签文本也可以定义成类变量来以便不需要临时实例化,这样的好处在于可以修改样式以及修改内容,具体可以看需求,这里仅做演示

JButton 按钮组件

按钮组件使用跟标签组件大体相似,这里不一一列举其常用方法,仅作示例

根据之前的调整,我们的代码可以修改为下面这样
import javax.swing.*;

/**
 * Application 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:02
 * @author 别欺负小白了好咩
 */
public class Application {
    public static void main(String[] args) {
        MyFirstFrame test = new MyFirstFrame();
        test.drawFrame();
        test.drawJLabel("这个是窗体之上的标签");
        test.drawJButton("这个是窗体之上的按钮");
        test.addJLabel(test.l,test.f);
        test.addJLabel(test.b,test.f);
    }
}
import javax.swing.*;
import java.awt.*;
/**
 * MyFirstFrame 类
 * 操作人:小白
 * 日期:2021/11/8
 * 时间:13:04
 * @author 别欺负小白了好咩
 */
public class MyFirstFrame {
    int WIDTH;
    int HEIGHT;
    int LOCATION_X;
    int LOCATION_Y;
    JFrame f =  new JFrame("这是一个窗口");
    JLabel l = new JLabel("这是一个标签");
    JButton b = new JButton("这是一个按钮");

    public void drawFrame(){
        this.drawFrame(300,100,500,500);
    }

    public void drawFrame(int WIDTH, int HEIGHT, int LOCATION_X, int LOCATION_Y) {
        f.setSize(WIDTH,HEIGHT); ;
        f.setBackground(Color.WHITE);
        f.setLocation(LOCATION_X,LOCATION_Y);
        f.setVisible(true);
        System.out.println("窗口已显示");
    }

    public void drawJLabel(String text){
        l.setText(text);
        System.out.println("标签内容已修改为: --> " + text);
    }

    public void drawJButton(String text){
        b.setText(text);
        System.out.println("按钮内容已修改为: --> " + text);
    }

    public void addJLabel(Container container,JFrame jFrame){
        jFrame.add(container);
        System.out.println("组件已添加完毕!");
    }


}

其中控制台输出如下
结束时控制台输出如下

小结

多加练习才能学好
目录
相关文章
|
2月前
|
Java 虚拟化 容器
(Java)Java里JFrame窗体的基本操作(容器布局篇-1)
容器 容器,我的理解是可以包容其他东西的玩意。它可以是一个盒子,可以是一个虚拟化的物品,可只要能包裹住其他存在质体的东西,那么都可以称作是容器。例如:JPanel组件和JScollPane组件两者都是容器也是组件。 既然有容器,那么容器中的布局就必不可少了。不然不规矩的摆放物品,人类看不习惯,我也看不习惯 ???? 本篇内容,将说明java JFrame窗体里容器中几类布局。 说明:所有在JFrame窗体里的容器布局都会使用setLayout()方法,采用的布局参数都将放进这个方法里 绝对布局 调用窗体容器
113 1
|
2月前
|
Java 数据安全/隐私保护 索引
(Java)Java里JFrame窗体的基本操作(组件篇-3)
回顾 说过了下拉框和下拉列表,本篇内容将了解滚动面板和各类输入框 什么是组件? 如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入; 另:在使用组件前,请先将窗体中的内容类给实例化出来进行操作,代码如下: Container c = getContentPane(); JScollPane JScollPane类,说的就是滚动面板。它不同于其他组件,它是一个容器,
87 1
|
2月前
|
Java 索引 容器
(Java)Java里JFrame窗体的基本操作(组件篇-2)
回顾 这算是JFrame窗体基本操作的组件第二篇了,上一篇说过了单选框,复选框,按钮。 在这一篇中,我会说明下拉框和列表框 什么是组件? 自行百度:java中JFrame窗体里的组件是什么? 名字都给你想好了 ( :I ) JComBox下拉框 JComBox类,就是下拉框,实例化出来后,要填写泛型<>,添加是什么数据类型的内容,泛型中就写上该数据类型; JComboBox<?> combox = new JComboBox<>(); 以下实例化下拉框的时候我泛型写的全
96 2
|
2月前
|
Java 调度 容器
(Java)JFrame窗体的基本操作(1-窗体的创建)
什么是窗体? 窗体,是某个程序,在电脑中,手机中的窗口化程序。它在非固定状态下,可以自由的变换大小。同时,窗体,也是容器,窗体这个容器可以在内部处理很多的小组件。 窗体的具体例子:例如,所有的浏览器,浏览器中网页里打开的提示框,电脑的QQ,手机上的小窗模式,都是窗体; 在本篇内容中,我们会使用JFrame和JDialog两个类,在实现java中的窗体; 在JAVA中如何创建窗体? 在java中,我们需要引入javax.swing包下的JFrame类或者JDialog类,这样才能使用两个窗体;但是,一些窗
165 0
|
2月前
|
Java 容器
(Java)Java里JFrame窗体的基础操作(组件-1)
如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,当然这只是在不熟悉组件的前提下。如果深入了解了组件,那么它有着非常多的组件,这些组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入
72 1
|
4月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
270 7
|
6月前
|
Java 数据库连接 数据库
Java 组件详细使用方法与封装实战指南
本指南详解Java核心组件使用与封装技巧,涵盖跨平台开发、面向对象编程、多线程、数据库操作等关键内容,并提供工具类、连接池、异常及响应结果的封装方法。结合Spring框架、MyBatis、Spring Boot等主流技术,助你掌握高质量Java组件设计与开发实践。
211 2
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
Java 数据安全/隐私保护 容器
java当中组件和窗口的相容问题(里面包含了这些方法的作用)
Java窗口和组件的布局指南,教你如何打造一个既美观又实用的GUI界面。
131 0
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!