Java Swing 如何让界面更加美观


一、设置窗体的背景图

利用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();
    }
}
 	

在这里插入图片描述

  • 10
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黯然-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值