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"));
}