Java实战之亲戚关系计算器(swing版)(4)——界面装饰

在util包下创建StyleUtil.java类,添加如下方法:

package util;

import javax.swing.*;
import java.awt.*;

/**
 * 样式方法类
 *
 * @author lck100
 */
public class StyleUtil {
    /**
     * 设置名称按钮的样式(如父、母等按钮)
     *
     * @param buttons 按钮组
     */
    public void setNameButtonStyle(JButton... buttons) {
        for (JButton button : buttons) {
            // 设置背景色
            button.setBackground(new Color(255, 255, 255));
            // 设置前景色
            button.setForeground(new Color(0, 0, 0));
            // 设置字体
            button.setFont(new Font("微软雅黑", Font.PLAIN, 20));
            // 设置点击按钮时的边框线
            button.setFocusPainted(false);
            // 设置边界
            button.setBorderPainted(true);
        }
    }

    /**
     * 操作结果:设置“计算”按钮样式
     *
     * @param buttons 计算按钮
     */
    public void setCountButtonStyle(JButton... buttons) {
        for (JButton button : buttons) {
            // 设置前景色
            button.setForeground(new Color(255, 255, 255));
            // 设置字体
            button.setFont(new Font("微软雅黑", Font.PLAIN, 18));
            // 设置点击按钮时的边框线
            button.setFocusPainted(false);
            // 设置边界
            button.setBorderPainted(false);
        }
    }

    /**
     * 操作结果:设置标签样式
     *
     * @param labels 标签组
     */
    public void setLabelStyle(JLabel... labels) {
        for (JLabel label : labels) {
            // 设置字体
            label.setFont(new Font("微软雅黑", Font.PLAIN, 23));
        }
    }

    /**
     * 操作结果:设置文本域样式
     *
     * @param textAreas 文本域组
     */
    public void setTextAreaStyle(JTextArea... textAreas) {
        for (JTextArea textArea : textAreas) {
            // 设置背景色
            textArea.setBackground(new Color(244, 249, 251));
            // 设置字体
            textArea.setFont(new Font("微软雅黑", Font.PLAIN, 20));
            // 设置前景色
            textArea.setForeground(new Color(85, 85, 85));
        }
    }

    /**
     * 操作结果:设置面板样式
     *
     * @param panels 面板组
     */
    public void setPanelStyle(JPanel... panels) {
        for (JPanel panel : panels) {
            // 设置边框
            panel.setBorder(BorderFactory.createLineBorder(new Color(195, 199, 200), 1, true));
            // 设置不透明
            panel.setOpaque(false);
        }
    }

    /**
     * 操作结果:设置窗体样式
     *
     * @param frame 窗体
     */
    public void setFrameStyle(JFrame frame) {
        frame.getContentPane().setBackground(new Color(213, 233, 237));
    }

    /**
     * 操作结果:设置窗体图标标题
     *
     * @param frame         窗体
     * @param titleIconPath 图标路径
     */
    public void setTitleIcon(JFrame frame, String titleIconPath) {
        //Java提供的GUI默认工具类对象
        Toolkit kit = Toolkit.getDefaultToolkit();
        //为指定窗口设置图标标题
        frame.setIconImage(kit.createImage(titleIconPath));
    }
}

接着在Frame.java中添加如下方法:

    /**
     * 为整个界面添加样式
     */
    private void setStyle() {
        StyleUtil style = new StyleUtil();
        // 设置名称按钮的样式
        style.setNameButtonStyle(fatherButton, motherButton, husbandButton, wifeButton, sonButton, daughterButton, bigBrotherButton, smallBrotherButton, bigSisterButton, smallSisterButton);
        // 设置计算按钮的样式
        style.setCountButtonStyle(countButton, undoButton, clearButton);
        countButton.setBackground(new Color(66, 139, 202));
        undoButton.setBackground(new Color(92, 184, 92));
        clearButton.setBackground(new Color(217, 83, 79));
        // 设置标签的样式
        style.setLabelStyle(relationLabel, resultLabel);
        // 设置文本域的样式
        style.setTextAreaStyle(inputRelationTextArea, outputResultTextArea);
        // 设置面板的样式
        style.setPanelStyle(relationPanel, nameButtonPanel, countButtonPanel, resultPanel);
        // 设置窗体的样式
        style.setFrameStyle(this);
        // 设置图片
        style.setTitleIcon(this, "images/qinshu.png");
    }

在构造器Frame中添加如下语句,对样式设置的调用:

        // 设置样式
        setStyle();

该代码放置的位置如下:

运行程序,效果图如下:

 

 

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【20191112】可获取本节源码。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值