swing 界面demo

版权声明: 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();    
    }
}

运行结果

猜你喜欢

转载自blog.csdn.net/s0cket/article/details/82253983