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();
}
}
本文来自博客园,作者:未来的你!,转载请注明原文链接:https://www.cnblogs.com/frost-descent/p/16651058.html