public class MyBorder extends AbstractBorder {

    private static final long serialVersionUID = 1L;

    private int xOff;
private int yOff;
private Insets insets; public MyBorder(int x, int y) {
this.xOff = x;
this.yOff = y;
this.insets = new Insets(0, 0, this.xOff, this.yOff);
} @Override
public Insets getBorderInsets(Component c) {
return this.insets;
} @Override
public void paintBorder(Component c, Graphics g, int x, int y, int width,
int height) {
g.translate(x, y);
BufferedImage rightImage = createBufferedImage(this.xOff, height
- this.yOff, Color.red, 0.5f);
BufferedImage bottomImage = createBufferedImage(width - 2 * this.xOff,
height, Color.green, 0.5f);
g.drawImage(rightImage, width - this.xOff, this.yOff, null);
g.drawImage(bottomImage, this.xOff, height - this.yOff, null);
g.translate(-x, -y); } private BufferedImage createBufferedImage(int width, int height,
Color color, float alpha) {
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_BGR);
Graphics2D g2d = bufferedImage.createGraphics();
bufferedImage = g2d.getDeviceConfiguration().createCompatibleImage(
width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = bufferedImage.createGraphics();
g2d.setColor(color);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
alpha));
g2d.fillRect(0, 0, width, height);
g2d.dispose();
return bufferedImage; } public static void main(String[] args) {
JFrame frame = new JFrame("border");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField text = new JTextField("helloKitty");
text.setPreferredSize(new Dimension(100, 30));
JButton button = new JButton("donald duck");
// text.setBorder(new MyBorder(10, 10));
// text.setForeground(Color.yellow);
frame.getContentPane().setLayout(new BorderLayout());
button.setBorder(new MyBorder(5, 5));
frame.getContentPane().add(text, BorderLayout.CENTER);
frame.getContentPane().add(button, BorderLayout.SOUTH);
frame.setSize(300, 300);
frame.setVisible(true); }
}

swing自定义border的更多相关文章

  1. Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法

    Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法 摘自:https://blog.csdn.net/qq_31635851/article/details/ ...

  2. Java Swing 自定义Dialog确认对话框

    Java Swing 自定义Dialog 需求:当点击JFrame窗口的关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也不做(使用Dialog). 分析:虽然Java提供了 ...

  3. swing自定义JDialog弹出框

    第一次搞swing,自定义JDialog的例子较少,写下来备忘 ,对JDialog中的文本框进行了验证 package com.chauvet; import java.awt.Component; ...

  4. 自定义border 为 dashed 时的虚线间距

    li{ width: 100%; height: 3px; background-image: linear-gradient(to right, #009a61 0%, #009a61 50%, t ...

  5. 百度地图BMapLib.InfoBox 手机兼容源码修改

    InfoBox.prototype.initialize = function (map) { var me = this; var div = this._div = baidu.dom.creat ...

  6. Java登录界面的实现(注册、登录、背景图片)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.java * 作者:常轩 * 微信公众号:Worldh ...

  7. Swing应用开发实战系列之一:自定义JdbcTemplate

    笔者本人真正意义上接触编程开发是在2004年,最早用的就是VB,然后是Delphi等,后来转到.Net,中间断断续续还用过PowerBuilder等,无一例外,所研发设计的项目或系统都是WinForm ...

  8. Swing中使用UIManager批量自定义单一JComponent组件默认属性

    最近在研究Swing,被它的复杂性气的快吐血了,刚才本打算把JFrame的背景色换成白底,结果发现事情没想象中那么顺利,调用setBackground完全没有效果,猛然醒悟到JPanel本身是带不透明 ...

  9. Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

    本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...

随机推荐

  1. Facade 设计模式

    目的 在一个子系统的一组接口上提供一个统一的接口.Facade 设计模式定义了一个更高级别的接口,使子系统更容易使用. 通过一个更加简洁的接口来包装一个复杂的子系统. 解决的问题 客户端需要一个简化的 ...

  2. html5 audio组件禁止下载

    参考链接:https://wdd.js.org/audio-hide-download-icon.html 1. controlsList=”nodownload”// 这个方法只支持 Chrome ...

  3. keras 类似问题解决:model找不到,或者无法下载

    Applications Keras Applications are deep learning models that are made available alongside pre-train ...

  4. Knockout: 使用CSS绑定和event的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示.

    目的:使用knockout提供的机制实现输入框失去焦点后的校验工作,并使用CSS绑定给未通过校验的输入框添加红色边框突出显示. 步骤: 先在htm中添加.error的css样式, 并在输入框中的dat ...

  5. JAVA中Set集合--HashSet的使用

    一.使用HashSet添加一个String类型的值: public static void hashSet1(){ HashSet<String> hashSet = new HashSe ...

  6. html与表格(table)相关的属性

    <table> 标签定义 HTML 表格.简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成.tr 元素定义表格行,th 元素定义表头,td 元素定义 ...

  7. 安装Flume的时候出现File Channel transaction capacity cannot be greater than the capacity of the channel capacity -解决方案 摘自网络

    部署flume集群时,在启动collector服务器没报错,启动agent服务器报错: File Channel transaction capacity cannot be greater than ...

  8. haproxy 同一域名下分发请求

    http://www.th7.cn/Program/java/201608/936162.shtml https://my.oschina.net/lockupme/blog/733375 还有一点要 ...

  9. 怎样使用 Apache ab 以及 OneAPM 进行压力測试?

    下一个 release 准备小长假后就要 go-live .全部的測试 case 都 cover 过了.但还未进行过压力測试,有点不放心,刚好过节期间家人都回家去了,假期最终能够抽点时间压測一把. A ...

  10. Android Studio 1.1.0 “关联源码” 或者“导入源码” ,又或者插件包

    其实这博文是废话!为什么呢? 1.如果自己的SDK没有更新相应当前操作版本的source的话,相应的v4,v7等等的源码都不会自动导入的. 其实Android Studio自身就已经会去检测你当前SD ...