边距与填充
边距与填充,在 Swing 里,边距和填充也是由Border来实现的
Border pading = BorderFactory.createEmptyBorder(8, 8, 8, 8);
EmptyBorder,就可以用来实现空白填充效果
代码:
class MyFrame extends JFrame{
public MyFrame(String title) {
super(title);
ColorfulLabel a1 = new ColorfulLabel("Hello world", Color.RED);
ColorfulLabel a2 = new ColorfulLabel("Hello nihao", Color.BLUE);
ColorfulLabel a3 = new ColorfulLabel("Hello xiaoxin", Color.GREEN);
Border padding = BorderFactory.createEmptyBorder(8, 8, 8, 8);
Border border = BorderFactory.createLineBorder(Color.BLUE, 2);
border = BorderFactory.createCompoundBorder(border, padding);
Border margin = BorderFactory.createEmptyBorder(8, 8, 8, 8);
border = BorderFactory.createCompoundBorder(margin, border);
JPanel panel = new JPanel();
panel.setBorder(border);
this.setContentPane(panel);
panel.setLayout(new AfYLayout(0));
panel.add(a1);
panel.add(a2);
panel.add(a3);
}
private class ColorfulLabel extends JLabel{
public ColorfulLabel(String text, Color color) {
this.setText(text);
this.setOpaque(true);
this.setBackground(color);
this.setHorizontalAlignment(SwingConstants.CENTER);
}
}
}
显示:
步骤:
- 给根容器设置填充padding
- 给根容器再添加一个边框
- 再在外面添加一些空白间距作为margin
padding:边框与里面内容的距离
margin:边框与外面内容的距离
AfBorder
提供的一个工具类,方便对 JComponent 控件添加边框和边距
- addPadding() //添加padding
- addMargin() //添加外边距
- addOuterBorder() //添加外边界
- addInnerBorder() //添加内边界
代码:
class MyFrame extends JFrame{
public MyFrame(String title) {
super(title);
//创建一个Box, 并设置为顶层容器(取代原有的顶层容器
JPanel root = new JPanel();
this.setContentPane(root);
root.setLayout(new AfYLayout(4));
//设置边距
AfBorder.addPadding(root, 8);
//添加三个控件
ColorfulLabel a1 = new ColorfulLabel("Hello World", Color.BLUE);
ColorfulLabel a2 = new ColorfulLabel("Hello xiaoxin", Color.RED);
ColorfulLabel a3 = new ColorfulLabel("Hello xiaochen", Color.GREEN);
root.add(a1);
root.add(a2);
root.add(a3);
}
private class ColorfulLabel extends JLabel{
public ColorfulLabel(String text, Color color) {
this.setText(text);
this.setBackground(color);
this.setOpaque(true);
this.setHorizontalAlignment(SwingConstants.CENTER);
}
}
}
输出:
AfPanel
提供一个工具类 AfPanel,用于快速布局
AfPanel p = new AfPanel();
p.padding(4); //设置内边距
p.margin(4); //设置外边距
p.preferredWidth(150);
p.preferredHeight(30);