java titledborder_Swing-setBorder()用法-入门

注:本文内容转自:Swing编程边框(Border)的用法总结。内容根据笔者理解稍有整理。

函数说明:

public void setBorder(Border border)

设置此组件的边框。Border 对象负责定义组件的 insets(直接对组件重写所有 insets 设置),并且可选地呈现这些 insets 范围内的边框装饰。要为 swing 组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是 insets)。在单个组件中可使用复合边框来嵌套多个边框。 虽然从技术上讲可以在继承自 JComponent 的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法正常地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel 或 JLabel 上设置边框时,建议将组件放入 JPanel 中,并在 JPanel 上设置边框。

Border对象的定义主要通过BorderFactory进行,这也是本文讨论的重点,根据API的解释:BorderFactory提供标准Border对象的工厂类。在任何可能的地方,此工厂类都将提供对已共享Border实例的引用。下面讨论具体的应用方法:

importjava.awt.Color;importjava.awt.Dimension;importjava.awt.GridLayout;import javax.swing.*;importjavax.swing.border.Border;importjavax.swing.border.TitledBorder;public classsetBorderDemo {public static voidmain(String[] args) {//TODO Auto-generated method stub

JPanel panel = newJPanel();

panel.setLayout(new GridLayout(0, 2, 5, 10));

panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

JButton p1= newJButton();

p1.setBorder(BorderFactory.createLineBorder(Color.red,3));

p1.add(new JLabel("线边框"));

panel.add(p1);

JPanel p2= newJPanel();

p2.setBorder(BorderFactory.createEtchedBorder());

p2.add(new JLabel("蚀刻边框"));

panel.add(p2);

JPanel p3= newJPanel();

p3.setBorder(BorderFactory.createRaisedBevelBorder());

p3.add(new JLabel("斜面边框(凸)"));

panel.add(p3);

JPanel p4= newJPanel();

p4.setBorder(BorderFactory.createLoweredBevelBorder());

p4.add(new JLabel("斜面边框(凹)"));

panel.add(p4);

JPanel p5= newJPanel();

p5.setBorder(BorderFactory.createTitledBorder("标题"));

p5.add(new JLabel("标题边框"));

panel.add(p5);

JPanel p6= newJPanel();

TitledBorder tb= BorderFactory.createTitledBorder("标题");

tb.setTitleJustification(TitledBorder.RIGHT);

p6.setBorder(tb);

p6.add(new JLabel("标签边框(右)"));

panel.add(p6);

JPanel p7= newJPanel();

p7.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.yellow));

p7.add(new JLabel("花色边框"));

panel.add(p7);

JPanel p8= newJPanel();

Border b1= BorderFactory.createLineBorder(Color.blue, 2);

Border b2=BorderFactory.createEtchedBorder();

p8.setBorder(BorderFactory.createCompoundBorder(b1, b2));

p8.add(new JLabel("组合边框"));

panel.add(p8);

JFrame frame= new JFrame("Swing边框演示");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

}

}

运行效果如下图所示:

a10f71584b1bcd1f72d72adca9d3885b.png

运行效果图

需注意的是,panel与frame之间其实是有一个宽度为5像素的emptyBorder,它只占空间而不显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值