java jframe面板美化,Java-JFrame窗体美化

本文介绍了如何使用Java对JFrame窗体进行美化,包括去除默认样式、自定义圆角、添加背景图片、实现窗口关闭和最小化功能,以及输入框的圆角和边框效果。通过实例代码详细展示了如何创建一个登录窗体,提供了窗体美化的基本思路和方法。
摘要由CSDN通过智能技术生成

Java-JFrame窗体美化

JFrame默认的窗体比较土,可以通过一定的美化,让窗体表现的比较漂亮,具体要根据设计的设计图进行美化;

JFrame美化的大致思路:先将JFrame去除默认美化效果,实现JWindow效果,然后再JWindow基础上对窗体的各项内容自定义设置与美化,大多用到插入背景图片、添加各种鼠标事件、弹窗与输入框等圆角等各种美化;

下面是一个登录窗体的美化代码,以后再有对窗体美化的可以参照一下代码进行美化:

1、Login实体类代码:

package com;

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.Image;

import java.awt.geom.RoundRectangle2D;

import java.io.File;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLayeredPane;

import javax.swing.JPanel;

import javax.swing.JRootPane;

import javax.swing.JLabel;

import com.alibaba.fastjson.JSON;

import com.model.Message;

import com.model.User;

import com.sun.awt.AWTUtilities;

import com.util.FileUtils;

import com.util.MyButton;

import com.util.MyLineBorder;

import com.util.VerifyCodeUtils;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JTextField;

import javax.swing.border.MatteBorder;

import javax.swing.JPasswordField;

import java.awt.event.FocusAdapter;

import java.awt.event.FocusEvent;

/**

* 用户登录窗体(按照设计图片效果制作)

* @author admin

*

*/

public class Login1{

private JFrame frame;//窗体

private JTextField userNameField;//用户名输入框

private JPasswordField passwordField;//密码输入框

private JTextField verifyCodeField;//验证码输入框

private String verifyCode;//验证码图片中的验证码值

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

Login1 window = new Login1();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the application.

*/

public Login1() {

initialize();

}

/**

* Initialize the contents of the frame.

*/

private void initialize() {

//将存储验证码文件夹下的所有验证码图片删除

FileUtils.deleteAllFiles("./verifyCodeImg");

//自定义圆角输入框边界线

MyLineBorder myLineBorder = new MyLineBorder(new Color(192, 192, 192), 1 , true);

//只显示输入框的下边框

MatteBorder bottomBorder = new MatteBorder(0, 0, 1, 0, new Color(192, 192, 192));

//设置JFrame禁用本地外观,使用下面自定义设置的外观;

JFrame.setDefaultLookAndFeelDecorated(true);

frame = new JFrame();

frame.setBounds(0, 0, 300, 490);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(null);

/**

* 对窗体进行基本设置

*/

//设置窗体在计算机窗口的中心部位显示

frame.setLocationRelativeTo(frame.getOwner());

// 去掉窗口的装饰

frame.setUndecorated(true);

//采用指定的窗口装饰风格

frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);

//设置窗体圆角,最后两个参数分别为圆角的宽度、高度数值,一般这两个数值都是一样的

AWTUtilities.setWindowShape(frame,

new RoundRectangle2D.Double(0.0D, 0.0D, frame.getWidth(), frame.getHeight(), 20.0D, 20.0D));

//设置背景颜色,记住一定要修改frame.getContentPane()的颜色,因为我们看到的都是这个的颜色而并不是frame的颜色

frame.getContentPane().setBackground(Color.white);

/**

* 插入顶部非凡汽车背景图片

*/

//创建具有分层的JLayeredPane

JLayeredPane layeredPane = new JLayeredPane();

layeredPane.setBounds(0, -5, 300, 200);

frame.getContentPane().add(layeredPane);

// 创建图片对象

ImageIcon img = new ImageIcon(Login1.class.getResource("/images/dingbu.jpg"));

//设置图片在窗体中显示的宽度、高度

img.setImage(img.getImage().getScaledInstance(300, 200,Image.SCALE_DEFAULT));

JPanel panel = new JPanel();

panel.setBounds(0, -5, 300, 200);

layeredPane.add(panel, JLayeredPane.DEFAULT_LAYER);

JLabel lblNewLabel = new JLabel("");

panel.add(lblNewLabel);

lblNewLabel.setIcon(img);

/**

* 插入窗体关闭的背景图片及功能

*/

// 创建图片对象

ImageIcon closeImg = new ImageIcon(Login1.class.getResource("/images/close.png"));

//设置图片在窗体中显示的宽度、高度

closeImg.setImage(closeImg.getImage().getScaledInstance(31, 31,Image.SCALE_DEFAULT));

JPanel closePanel = new JPanel();

closePanel.setBounds(269, -5, 31, 31);

layeredPane.add(closePanel,JLayeredPane.MODAL_LAYER);

JLabel closeLabel = new JLabel("");

closePanel.add(closeLabel);

closeLabel.setIcon(closeImg);

closeLabel.addMouseListener(new MouseAdapter() {

//鼠标点击关闭图片,实现关闭窗体的功能

@Override

public void mouseClicked(MouseEvent e) {

//dispose();

System.exit(0);//使用dispose();也可以关闭只是不是真正的关闭

}

//鼠标进入,换关闭的背景图片

@Override

public void mouseEntered(MouseEvent e) {

// 创建图片对象

ImageIcon closeImg1 = new ImageIcon(Login1.class.getResource("/images/mouse_close.png"));

//设置图片在窗体中显示的宽度、高度

closeImg1.setImage(closeImg1.getImage().getScaledInstance(31, 31,Image.SCALE_DEFAULT));

closeLabel.setIcon(closeImg1);

}

//鼠标离开,换关闭的背景图片

@Override

public void mouseExited(MouseEvent e) {

// 创建图片对象

ImageIcon closeImg = new ImageIcon(Login1.class.getResource("/images/close.png"));

//设置图片在窗体中显示的宽度、高度

closeImg.setImage(closeImg.getImage().getScaledInstance(31, 31,Image.SCALE_DEFAULT));

closeLabel.setIcon(closeImg);

}

});

/**

* 插入窗体最小化的背景图片及功能

*/

// 创建图片对象

ImageIcon minImg = new ImageIcon(Login1.class.getResource("/images/min.png"));

//设置图片在窗体中显示的宽度、高度

minImg.setImage(minImg.getImage().getScaledInstance(31, 31,Image.SCALE_DEFAULT));

JPanel minPanel = new JPanel();

minPanel.setBounds(237, -5, 31, 31);

layeredPane.add(minPanel,JLayeredPane.MODAL_LAYER);

JLabel minLabel = new JLabel("");

minLabel.addMouseListener(new MouseAdapter() {

//鼠标点击最小化图片,实现最小化窗体的功能

@Override

public void mouseClicked(MouseEvent e) {

frame.setExtendedState(JFrame.ICONIFIED);//最小化窗体

}

//鼠标进入,换最小化的背景图片

@Override

public void mouseEntered(MouseEvent e) {

// 创建图片对象

ImageIcon minImg1 = new ImageIcon(Login1.class.getResource("/images/mouse_min.png"));

//设置图片在窗体中显示的宽度、高

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值