版权声明: https://blog.csdn.net/s0cket/article/details/82253983
主界面类
package egg;
import java.awt.Font;
import javax.swing.*;
/**
* 主界面类
* @author West
*
*/
public class MainFrame extends JFrame{
JLayeredPane jlp;
JPanel jp;
JPanel jp2;
JLabel jl;
JLabel jl2;
ImageIcon img;
JTextField jtf1;
RoundButton button;
public MainFrame() {
// TODO Auto-generated constructor stub
//初始化层级面板jlp
jlp = new JLayeredPane();
img = new ImageIcon("img/主界面.jpg");
//初始化面板jp
jp = new JPanel();
jp.setBounds(0,0,img.getIconWidth(),img.getIconHeight());
//添加背景图片到面板jp中
jl = new JLabel(img);
jp.add(jl);
//设置标签“消费总计”
jl2 = new JLabel("消费总计:");
jl2.setFont(new Font("Dialog",1,55));
jl2.setBounds(50,50,300,100);
//设置消费总计单行文本框
jtf1 = new JTextField();
jtf1.setBounds(50,180,400,110);
jtf1.setFont(new Font("Dialog",1,55));
//添加确认按钮
button = new RoundButton();
button.setText("确认");
button.setFont(new Font("Dialog",1,55));
button.setBounds(250,400,200,80);
//初始化超市消费信息消费面板jp2,设置布局为空
jp2 = new JPanel();
jp2.setLayout(null);
//为jp2添加控件按钮,输入文本框,标签
jp2.add(jl2);
jp2.add(jtf1);
jp2.add(button);
jp2.setBounds(700, 180, 500, 600);
//将jp添加到底层容器中
jlp.add(jp,JLayeredPane.DEFAULT_LAYER);
//将jp2添加到上层容器中
jlp.add(jp2,JLayeredPane.MODAL_LAYER);
//去掉标题栏
this.setUndecorated(true);
this.setLayeredPane(jlp);
this.setSize(img.getIconWidth(),img.getIconHeight());
this.setLocation(0,0);
this.setVisible(true);
}
}
网上荡的自定义button,直接拿来用了,水平有限,自己写不出来
package egg;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JButton;
/**
* 自定义按钮类
* @author West
*
*/
public class RoundButton extends JButton {
private static final long serialVersionUID = 39082560987930759L;
public static final Color BUTTON_COLOR1 = Color.white;
public static final Color BUTTON_COLOR2 = new Color(1, 155, 227);
public static final Color BUTTON_FOREGROUND_COLOR = Color.WHITE;
private boolean hover;
private int style;
public static final int ROUND_RECT = 0;
public RoundButton() {
this(ROUND_RECT);
}
public RoundButton(int style) {
this.style = style;
setFont(new Font("system", Font.PLAIN, 12));
setBorderPainted(false);
setForeground(BUTTON_COLOR2);
setFocusPainted(false);
setContentAreaFilled(false);
addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
setForeground(BUTTON_FOREGROUND_COLOR);
hover = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
setForeground(BUTTON_COLOR2);
hover = false;
repaint();
}
});
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
int h = getHeight();
int w = getWidth();
float tran = 1F;
if (!hover) {
tran = 0.3F;
}
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint p1;
GradientPaint p2;
if (getModel().isPressed()) {
p1 = new GradientPaint(0, 0, new Color(0, 0, 0), 0, h - 1,
new Color(100, 100, 100));
p2 = new GradientPaint(0, 1, new Color(0, 0, 0, 50), 0, h - 3,
new Color(255, 255, 255, 100));
} else {
p1 = new GradientPaint(0, 0, new Color(100, 100, 100), 0, h - 1,
new Color(0, 0, 0));
p2 = new GradientPaint(0, 1, new Color(255, 255, 255, 100), 0,
h - 3, new Color(0, 0, 0, 50));
}
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
tran));
GradientPaint gp = new GradientPaint(0.0F, 0.0F, BUTTON_COLOR1, 0.0F,
h, BUTTON_COLOR2, true);
g2d.setPaint(gp);
switch (style) {
case ROUND_RECT: {
RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(0, 0,
w - 1, h - 1, 20, 20);
Shape clip = g2d.getClip();
g2d.clip(r2d);
g2d.fillRect(0, 0, w, h);
g2d.setClip(clip);
g2d.setPaint(p1);
g2d.drawRoundRect(0, 0, w - 1, h - 1, 20, 20);
g2d.setPaint(p2);
g2d.drawRoundRect(1, 1, w - 3, h - 3, 18, 18);
break;
}
default:
break;
}
g2d.dispose();
super.paintComponent(g);
}
}
主程序类
package egg;
/**
* 测试主函数
* @author West
*
*/
public class Test {
public static void main(String[] args) {
new MainFrame();
}
}
运行结果