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("组件已添加完毕!");
    }


}

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

小结

多加练习才能学好
目录
相关文章
|
7月前
|
Java
深入理解Java中的AbstractQueuedSynchronizer(AQS):并发编程的核心组件
深入理解Java中的AbstractQueuedSynchronizer(AQS):并发编程的核心组件
|
4月前
|
Java Maven
使用java语言制作一个窗体(弹窗),用来收集用户输入的内容
该博客文章介绍了如何使用Java Swing中的JFrame创建一个窗体来收集用户输入的内容,并提供了详细的实现步骤和完整代码示例。
使用java语言制作一个窗体(弹窗),用来收集用户输入的内容
|
2月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
7月前
|
存储 前端开发 Java
深入探索Java集合框架:核心组件与高效应用
深入探索Java集合框架:核心组件与高效应用
|
2月前
|
Java 数据安全/隐私保护 容器
java当中组件和窗口的相容问题(里面包含了这些方法的作用)
Java窗口和组件的布局指南,教你如何打造一个既美观又实用的GUI界面。
38 0
|
4月前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
4月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!
|
4月前
|
存储 算法 前端开发
JVM架构与主要组件:了解Java程序的运行环境
JVM的架构设计非常精妙,它确保了Java程序的跨平台性和高效执行。通过了解JVM的各个组件,我们可以更好地理解Java程序的运行机制,这对于编写高效且稳定的Java应用程序至关重要。
62 3
|
5月前
|
安全 前端开发 Java
Java技术栈中的核心组件:Spring框架
Java作为一门成熟的编程语言,其生态系统拥有众多强大的组件和框架,其中Spring框架无疑是Java技术栈中最闪耀的明星之一。Spring框架为Java开发者提供了一套全面的编程和配置模型,极大地简化了企业级应用的开发流程。
74 1
|
6月前
|
Java 数据安全/隐私保护
利用Java图形化界面组件Swing写一个简易的登录界面
利用Java图形化界面组件Swing写一个简易的登录界面
95 1