Java Swing 如何让界面更加美观

2023-11-11


一、设置窗体的背景图

利用JLable类的构造方法或方法加载图片

ImageIcon image = new ImageIcon("D:\\背景.jpg");
JLabel jlable = new JLabel(image);
// JLabel jLabel = new JLabel();
// jLabel.setIcon(image);

当我们需要设置窗体的背景图,并将一些组件放到背景图上时,发现组件并不会显示出来。此时我们可以使用JLayeredPane类来实现。

// 创建一个JLayeredPane用于分层的。
JLayeredPane layeredPane = new JLayeredPane();
// 获取图片
ImageIcon image = new ImageIcon("D:\\背景.jpg");
// JLabel用于存放背景图片,作为背景添加到JPanel上
JLabel jlable = new JLabel(image);
// 创建JPanel,并将JLabel添加
JPanel jpanel = new JPanel();
// 设置JPanel大小为背景图片大小
jpanel.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
jpanel.add(jlable);

JButton button=new JButton("hello");
button.setBounds(0,75,200,75);

//将jpanel放到JLayeredPane的最底层
layeredPane.add(jpanel,JLayeredPane.DEFAULT_LAYER);
//将button放到jpanel高一层的地方
layeredPane.add(button,JLayeredPane.MODAL_LAYER);


//设置窗体
this.setLayeredPane(layeredPane);
this.setSize(image.getIconWidth(),image.getIconHeight());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

在这里插入图片描述

二、设置Button组件

# 将按钮填充的背景图改为透明
button1.setContentAreaFilled(false);
# 将按钮的边框隐藏	
button2.setBorder(null);

测试案例:

public class myFrame extends JFrame {
    public myFrame() {
        // 创建一个JLayeredPane用于分层的。
        JLayeredPane layeredPane = new JLayeredPane();
		// 获取图片
        ImageIcon image = new ImageIcon("C:\\Users\\28194\\Pictures\\Camera Roll\\地球.png");
		// JLabel用于存放背景图片,作为背景添加到JPanel上
        JLabel jlable = new JLabel(image);
		// 创建JPanel,并将JLabel添加
        JPanel jpanel = new JPanel();
		// 设置JPanel大小为背景图片大小
        jpanel.setBounds(0,0,300,400);
        jpanel.add(jlable);

        JButton button1=new JButton("hello");
        button1.setBounds(0,75,100,75);
        button1.setContentAreaFilled(false);
        button1.setBorder(null);
        JButton button2 = new JButton("world");
        button2.setBounds(200,75,100,75);
        button2.setContentAreaFilled(false);
        button2.setBorder(null);
        
		//将jpanel放到JLayeredPane的最底层
        layeredPane.add(jpanel,JLayeredPane.DEFAULT_LAYER);
		//将button放到jpanel高一层的地方
        layeredPane.add(button1,JLayeredPane.MODAL_LAYER);
        layeredPane.add(button2,JLayeredPane.MODAL_LAYER);


		//设置窗体
        this.setLayeredPane(layeredPane);
        this.setSize(400,400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        myFrame myjframe =  new myFrame();
    }
}

在这里插入图片描述

三、设置字体大小和颜色

Font f = new Font("隶书",Font.PLAIN,30);

设置按钮字体
button.setFont(f);
设置字体的颜色
button.setForeground(Color.RED);

在这里插入图片描述

四、设置组件的背景色

setBackgroud()

五、综合测试案例

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

public class MyJFrame extends JFrame {
    Font f = new Font("隶书",Font.PLAIN,30);
    Font f_user = new Font("隶书",Font.PLAIN,17);
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    public MyJFrame () {
        //创建一个JLayeredPane用于分层的。
        JLayeredPane layeredPane=new JLayeredPane();
        //获取图片
        ImageIcon image=new ImageIcon("C:\\Users\\28194\\Pictures\\Saved Pictures\\背景.jpg");
        //JLabel用于存放背景图片,作为背景添加到JPanel上
        JLabel jl=new JLabel(image);
        //创建JPanel,并将JLabel添加
        JPanel jp=new JPanel();
        //设置JPanel大小为背景图片大小
        jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
        jp.add(jl);


        JLabel jLabel_title = new JLabel("教务管理系统");
        jLabel_title.setBounds(25,0,200,90);
        jLabel_title.setFont(f);
        JLabel jLabel_user = new JLabel("用户:user");
        jLabel_user.setBounds(700,0,100,90);
        jLabel_user.setFont(f_user);


        JPanel jPanel_label = new JPanel();
        jPanel_label.setLayout(null);
        jPanel_label.setBackground(Color.cyan);
        jPanel_label.setBounds(0,0,image.getIconWidth(),90);
        jPanel_label.add(jLabel_title);
        jPanel_label.add(jLabel_user);

        //创建测试按钮
        jb1=new JButton("系别管理");
        jb1.setBounds(0,75,200,75);
        jb1.setFont(f);
        jb1.setForeground(Color.RED);
        jb1.setContentAreaFilled(false);
        jb1.setBorder(null);
        jb2=new JButton("课程管理");
        jb2.setContentAreaFilled(false);
        jb2.setBorder(null);
        jb2.setBounds(0,150,200,75);
        jb2.setFont(f);
        jb2.setForeground(Color.RED);
        jb3=new JButton("成绩管理");
        jb3.setContentAreaFilled(false);
        jb3.setBorder(null);
        jb3.setBounds(0,225,200,75);
        jb3.setFont(f);
        jb3.setForeground(Color.RED);
        jb4=new JButton("学生资料查询");
        jb4.setContentAreaFilled(false);
        jb4.setBorder(null);
        jb4.setBounds(0,300,200,75);
        jb4.setFont(f);
        jb4.setForeground(Color.RED);
        jb5=new JButton("学生成绩查询");
        jb5.setContentAreaFilled(false);
        jb5.setBorder(null);
        jb5.setBounds(0,375,200,75);
        jb5.setFont(f);
        jb5.setForeground(Color.RED);
        jb6=new JButton("数据分析");
        jb6.setContentAreaFilled(false);
        jb6.setBorder(null);
        jb6.setBounds(0,450,200,75);
        jb6.setFont(f);
        jb6.setForeground(Color.RED);

        JPanel jPanel = new JPanel();
        jPanel.setLayout(null);
        jPanel.setBackground(Color.darkGray);
        jPanel.setBounds(0,100,200,image.getIconHeight());

        jPanel.add(jb1);
        jPanel.add(jb2);
        jPanel.add(jb3);
        jPanel.add(jb4);
        jPanel.add(jb5);
        jPanel.add(jb6);

        //将jp放到JLayeredPane的最底层
        layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER);
        //将jb放到jp高一层的地方
        layeredPane.add(jPanel_label,JLayeredPane.MODAL_LAYER);
        layeredPane.add(jPanel,JLayeredPane.MODAL_LAYER);
      
        //设置窗体
        this.setLayeredPane(layeredPane);
        this.setSize(image.getIconWidth(),image.getIconHeight());
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
   public static void main(String[] args) {
        MyJFrame myjframe = new MyJFrame();
    }
}
 	

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing 如何让界面更加美观 的相关文章

  • 同一服务器上的许多应用程序具有相同的 JMX Mbean 类

    我有超过 5 个 Spring Web 应用程序 它们都在使用另一个通用库 这个公共库有它自己的 MBean 由于强制的唯一 objectName 约束 我的应用程序无法部署在同一服务器上 我使用 MBean 的方式是这样的 Managed
  • Kafka - 如何同时使用过滤器和过滤器?

    我有一个 Kafka 流 它从一个主题获取数据 并且需要将该信息过滤到两个不同的主题 KStream
  • 如何以编程方式使用包含多列的 where-in 子句执行 PostgreSQL 查询?

    我的查询是这样的 select from plat customs complex where code t code s in 01013090 10 01029010 90 它在 psql 控制台中运行良好 我的问题是如何在客户端代码中
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 以相反的顺序打印任何集合中的项目?

    我在 使用 Java 进行数据结构和问题解决 一书中遇到以下问题 编写一个例程 使用 Collections API 以相反的顺序打印任何 Collection 中的项目 不要使用 ListIterator 我不会把它放在这里 因为我想让有
  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • ThreeTen 向后移植与 JSR-310 的比较

    由于某些原因 我们现在无法使用 java 8 我们仍然停留在 java 7 上 不过 我想使用新的JSR 310 date time APIs现在 使用官方向后移植 ThreeTen http www threeten org threet
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

    我遇到了 Mockito 和 Hamcrest 的泛型问题 请假设以下界面 public interface Service void perform Collection
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • 如何使用 Jersey 将嵌套列表封送为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

    我正在开发一个使用 Jersey 将对象转换为 JSON 的项目 我希望能够写出嵌套列表 如下所示 data one two three a b c 我想要转换的对象首先将数据表示为 gt gt 我认为 Jersey 会做正确的事情 以上输
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大

随机推荐

  • (一)低功耗设计目的与功耗的类型

    一 低功耗设计的目的 1 便携性设备等需求 电子产品在我们生活中扮演了极其重要的作用 便携性的电子设备便是其中一种 便携性设备需要电池供电 需要消耗电池的能量 在同等电能提供下 低功耗设计的产品就能够工作更长的时间 时间的就是生命 因此低功
  • Java怎样写优秀的代码_写优质Java代码的4个技巧

    咱们平时的编程使命不外乎便是将相同的技能套件应用到不同的项目中去 关于大多数状况来说 这些技能都是能够满意方针的 然而 有的项目或许需求用到一些特别的技能 因而工程师们得深入研究 去寻觅那些最简略但最有用的办法 在前一篇文章中 咱们讨论了必
  • springmvc项目搭建

    第3天 Spring SpringMVC MyBatis集成 学习目标 SSM集成 集成流程理解 集成SpringMVC 集成Spring 集成MyBatis 事务测试 第1章 搭建环境 1 1 整合流程 整合说明 SSM整合可以使用多种方
  • 【论文精读】Hierarchical Text-Conditional Image Generation with CLIP Latents

    Hierarchical Text Conditional Image Generation with CLIP Latents 前言 Abstract 1 Introduction 2 Method 2 1 Decoder 2 2 Pri
  • 怎样将自己的电脑变成一个服务器(本地服务器)

    你想将自己的电脑变成一个服务器吗 或许你还不知道我们自己的电脑也可摇身一变成为服务器 现在我分享一下把我们的电脑变为服务器的方法 工具 原料 电脑 步骤1 打开 修改电脑相关服务功能 1 1 点击 开始 打开 控制面板 2 2 打开 程序
  • 登录工程一:传统 Web 应用中的身份验证技术

    标题中的 传统Web应用 这一说法并没有什么官方定义 只是为了与 现代化Web应用 做比较而自拟的一个概念 所谓 现代化Web应用 指的是那些基于分布式架构思想设计的 面向多个端提供稳定可靠的高可用服务 并且在需要时能够横向扩展的Web应用
  • 华为OD机试 - 比较两个版本号的大小(Java)

    题目描述 输入两个版本号 version1 和 version2 每个版本号由多个子版本号组成 子版本号之间由 隔开 由大小写字母 数字组成 并且至少有一个字符 按从左到右的顺序比较子版本号 比较规则如下 子版本号前面的0不参与比较 比如
  • 使用gSOAP与WebService - 第二部分 开发第一个WebService客户端(C++)

    CurrencyConvertor How use gSOAP and WebServices Part 2 Doing the first WS client Download Demo Project 42 1 KB Download
  • JSON空格转义(php、javascript)

    用input控件 存储json数据时 字符串有空格时报错 解决方法 进行空格转义 js文件 javascript var jsonData JSON stringify data replace s g nbsp var rowData
  • python读取图像并相加_python给图像加上mask,并提取mask区域实例

    python对图像提取mask部分 代码 coding utf 8 import os import cv2 import numpy as np def add mask2image binary images path masks pa
  • android nfc中Ndef格式的读写

    原文地址 检测到标签后在Activity中的处理流程 1 在onCreate 中获取NfcAdapter对象 NfcAdapter nfcAdapter NfcAdapter getDefaultAdapter this 2 在onNewI
  • 微信小程序 实现天气类功能

    参考链接 1 全国城市天气预报 城市天气预报查询 国内天气预报查询 天气网 https www tianqi com chinacity html 2 获取实时天气数据 获取数据 开发指南 微信小程序SDK 高德地图API https lb
  • apache字体文件跨域_css引用跨域字体文件woff,eot,ttf问题

    今天把站点的字体的静态文件woff eot ttf放到cdn去速度快一些 改成了外链地址 居然不加载报错 用下面的公用地址可以正常使用 https cdn bootcss com font awesome 4 7 0 fonts 搜索下 是
  • H5 页面采坑记录

    1 页面布局时 上下滑动页面时通常会把一些盒子放在 section section 标签中 但是在一些机型如iphonex测试中 上下滑动页面会出现都抖动的情况 不知道什么原因 解决方案就是 不使用 section 标签 直接在大盒子中写滚
  • 多线程之常用线程安全类型分析

    写在前面 本文一起看下在日常工作中我们经常用到的线程安全的数据类型 以及一些经验总结 1 常用线程安全数据类型 1 1 jdk集合数据类型 jdk的集合数据类型分为两类 一种是线性数据结构 另外一种是字典结构 分别看下 1 1 1 线性数据
  • 通过PyInstaller打包报“文件遇到错误”

    前言 不知道大家在作为python程序后 是不是都通过PyInstaller打包给用户使用呢 但是通过PyInstaller打包会出现一点小小的问题 本文章就来教你如何去解决这些问题 让打包后显示出控制台窗口 在打包的时候 不用加上 w让窗
  • 解码(二):音视频解码上下文创建配置和打开avcodec_open2打开演示

    如下代码 视频解码器打开 找到视频解码器 AVCodec vcodec avcodec find decoder ic gt streams videoStream gt codecpar gt codec id if vcodec cou
  • 远期与期货

    概述 期货合约与远期合约都是规定在将来的某一时间购买或者出售某项资产 这一点与期权类似 关键不同之处在于 期权持有者不会被强制购买或者出售资产 当无利可图时 可以选择放弃交易 但是 期货或者远期合约由必须履行事先约定的合约义务 远期 仅仅是
  • Java Lombok 报错(IllegalAccessError: class lombok.javac.apt.LombokProcessor)解决方法

    本文主要介绍Java 中 使用Lombok报错 java java lang IllegalAccessError class lombok javac apt LombokProcessor的解决方法及示例代码 原文地址 Java Lom
  • Java Swing 如何让界面更加美观

    文章目录 一 设置窗体的背景图 二 设置Button组件 三 设置字体大小和颜色 四 设置组件的背景色 五 综合测试案例 一 设置窗体的背景图 利用JLable类的构造方法或方法加载图片 ImageIcon image new ImageI