swing-基础style样式

swing中的style样式

因为先学的h5 后学的swing, 在swing中可能更喜欢称为UI, 但是有时候喜欢用一些css的习惯来使用,所以我一般会简称为style.

css 语法对于简单的页面布局,那可以形容为AK47, 在swing中我感觉必须写一些demo 或更多的应用才能理解.

style: 如果对于讨厌单调的页面的人,可能尤为的关注.

  • setFont:设置字体(可以设置字体类型,大小和粗细) 或者直接使用html文本实现
  • setBorder:可以调整组件的border 颜色,粗细,样式
  • setBackground:调整背景色
  • setForeground:调整前景色
  • setIcon: 设置图标
  • 类似css常用的margin padding float z-index position 一般是在layout(布局管理器管理)

ps: border的insets 相当于padding 控制边框与内置元素的距离时有时也需要考虑

style测试

如果想更好的掌握,建议完善自己的Demo,因为你有时候写代码时会发现一个现象:

理解起来特别容易,写起来特别卡顿.

在这里插入图片描述

  • Knowledge Case:
    如果仅仅想改变Font 的大小,使用与某个组件相同的字体风格
UIManager.getFont(fontUI).deriveFont(size);

如果想使用swing自带的图标 ,

UIManager.getIcon("InternalFrame.closeIcon")

如果想改变全局的某些样式

UIManager.put(uiName, param);

上图的测试代码

import com.formdev.flatlaf.FlatLightLaf;
import com.mynote.core.ui.*;
import com.mynote.core.util.FrameUtil;
import com.mynote.core.view.AbstractView;
import com.mynote.core.view.Row;
import net.miginfocom.swing.MigLayout;

import javax.swing.*;

/**
 * 测试一些ui效果
 */
public class StyleUITab extends AbstractView {


    /**
     * 初始化成员对象
     */
    @Override
    protected void init() {

    }


    /**
     * render视图
     */
    @Override
    protected void render() {

        view.setLayout(new MigLayout("wrap 1,w 100%"));
        styleForFont();
        styleForColor();
        styleForHtml();
        styleForIcon();
        styleForBorder();
        super.add(view, "w 80%");
    }

    /**
     * 字体样式
     */
    private void styleForFont() {
        JButton fontDefaultButton = new JButton("defaultButton");
        JButton largeButton = new JButton("largeButton");
        largeButton.setFont(FontBuilder.getButtonFontFont(20));
        createRow("font style", fontDefaultButton, largeButton);
    }

    /**
     * 颜色样式
     */
    private void styleForColor() {
        JButton bgBtn = ButtonBuilder.primaryButton("背景颜色");
        JButton fgBtn = ButtonBuilder.greenBorderButton("前景颜色");
        createRow("color style", bgBtn, fgBtn);
    }

    /**
     * html 样式
     */
    private void styleForHtml() {
        JLabel defaultText = new JLabel("默认文本");
        JLabel htmlText = new JLabel("<html><font size='4' color='#393d49' ><u><b>u/b/font标签</b></u></html>");
        JButton htmlBtnText = new JButton("<html><font color='#009688'>html-btn</font></html>");
        createRow("html style", defaultText, htmlText, htmlBtnText);
    }


    /**
     * 图标
     */
    private void styleForIcon() {
        JLabel iconText = new JLabel("loading...");
        iconText.setIcon(IconBuilder.ICON_LOADING);

        JLabel iconTopText = new JLabel("java swing");
        iconTopText.setVerticalTextPosition(SwingConstants.BOTTOM);
        iconTopText.setHorizontalTextPosition(SwingConstants.CENTER);
        iconTopText.setIcon(IconBuilder.buildIcon(IconBuilder.Message.OK));

        createRow("icon style", iconText, iconTopText);

    }


    /**
     * 边框
     */
    private void styleForBorder() {

        JButton btn = new JButton("default border");
        JButton redBorder = ButtonBuilder.dangerBorderButton("red border");
        JButton onlyBottomBorder = new JButton("only bottom border");
        onlyBottomBorder.setBorder(BorderBuilder.bottomBorder(1, ColorBuilder.HOVER_GREEN_COLOR1));
        createRow("border style", btn, redBorder, onlyBottomBorder);

    }


    private Row createRow(String title, JComponent... components) {
        Row row = new Row();
        for (JComponent component : components) {
            row.add(component);
        }
        row.setBorder(BorderFactory.createTitledBorder(title));
        row.addParent(view);
        return row;
    }

    /**
     * 绑定事件
     */
    @Override
    protected void bindEvents() {

    }

    public static void main(String[] args) {
        FlatLightLaf.install();
        FrameUtil.launchTest(new DefaultDocPanel(new StyleUITab(), "style.html"));
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值