JButton是AbstractButton类的扩展,当按钮被选中,点击时会出现不同的状态,Swing本身的展示效果在绘制面板的时候不尽人意,因此可以通过更改按钮的鼠标事件来美化按钮。

1.TestFrame.java,用于绘制主面板的组件,以下是源码:

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.Insets;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JMenuBar;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.plaf.basic.BasicButtonUI;

public class TestFrame extends JFrame {

private JTextField searchText = null;

private JButton searchBtn = null;

private JButton editBtn = null;

private JButton saveBtn = null;

public TestFrame() {

setLookAndFeel();

init();

}

/**

* 为主面板设置皮肤

*/

private void setLookAndFeel() {

try {

UIManager

.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 增加工具栏的组件,并设置样式

*/

private JMenuBar addMenuBar() {

JMenuBar menuBar = new JMenuBar();

menuBar.setLayout(new FlowLayout(40, 4, 0));

// 增加文件选择按钮

menuBar.add(createBtn("File", "./src/folder_up.png"));

// 增加编辑按钮

editBtn = createBtn("Edit", "./src/page_edit.png");

//editBtn.setEnabled(false);

menuBar.add(editBtn);

// 增加保存文件按钮

saveBtn = createBtn("Save", "./src/folder_down.png");

//saveBtn.setEnabled(false);

menuBar.add(saveBtn);

// 增加查询输入文本框

searchText = new JTextField();

searchText.setPreferredSize(new Dimension(140, 27));

menuBar.add(searchText);

// 增加查询按钮

searchBtn = createBtn("Search", "./src/search.png");

//searchBtn.setEnabled(false);

menuBar.add(searchBtn);

return menuBar;

}

/**

* 创建工具栏按钮

*

* @author lqj

* @param text

* 按钮名称

* @param icon

* 按钮图标所在路径

* @return 返回添加样式和监听器后的按钮

*/

private JButton createBtn(String text, String icon) {

JButton btn = new JButton(text, new ImageIcon(icon));

btn.setUI(new BasicButtonUI());// 恢复基本视觉效果

btn.setPreferredSize(new Dimension(80, 27));// 设置按钮大小

btn.setContentAreaFilled(false);// 设置按钮透明

btn.setFont(new Font("粗体", Font.PLAIN, 15));// 按钮文本样式

btn.setMargin(new Insets(0, 0, 0, 0));// 按钮内容与边框距离

btn.addMouseListener(new MyMouseListener(this));

return btn;

}

/**

* @author lqj

* 初始化主面板和工作栏内容

*/

private void init() {

JMenuBar menuBar = addMenuBar();

// menuBar.setBackground(Color.WHITE);

menuBar.setPreferredSize(new Dimension(1400, 30));

this.setJMenuBar(menuBar);

this.setSize(1320, 750);

this.setLocationRelativeTo(null);

this.setVisible(true);

this.setTitle("TestButton");

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

// this.setBackground(Color.gray);

}

// main

public static void main(String[] args) {

new TestFrame();

}

}

2.MyMouseListener.java,用于增加鼠标事件,源码如下:

import java.awt.Color;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.JButton;

import javax.swing.border.Border;

import javax.swing.border.EtchedBorder;

public class MyMouseListener implements MouseListener {

private TestFrame frame;

public MyMouseListener() {

// TODO Auto-generated constructor stub

}

public MyMouseListener(TestFrame f) {

this.frame = f;

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

String btnName =((JButton)e.getSource()).getText();

if ("File".equals(btnName.trim())) {

//鼠标点击事件

}

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

JButton btn = (JButton) e.getComponent();

Border etchedBorder = new EtchedBorder(EtchedBorder.RAISED);// 设置边框凸显

btn.setBorder(etchedBorder);

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

JButton btn = (JButton) e.getComponent();

Border etchedBorder = new EtchedBorder(EtchedBorder.LOWERED);// 设置边框凹显

btn.setBorder(etchedBorder);

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

JButton btn = (JButton) e.getComponent();

btn.setForeground(new Color(0x33, 0x66, 0xcc));// 设置字体颜色

btn.setBorderPainted(true);// 显示边框

Border etchedBorder = new EtchedBorder(EtchedBorder.LOWERED);// 设置边框凹显

btn.setBorder(etchedBorder);

btn.setRolloverEnabled(true);

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

JButton btn = (JButton) e.getComponent();

btn.setForeground(Color.black);// 设置字体颜色

btn.setBorderPainted(false);// 隐藏边框

}

}

最后上传一张运行的效果图片给大家看!希望对大家有用!

java jbutton icon 边框_Swing开发JButton图标效果篇相关推荐

  1. java jpopupmenu 无法显示_java – 从JButton显示/隐藏JPopupMenu; FocusListener无法正常工作?...

    我需要一个带有附加下拉样式菜单的JButton.所以我拿了一个JPopupMenu并以你在下面的代码中看到的方式将它附加到JButton.它需要做的是: >单击时显示弹出窗口 >如果再次点 ...

  2. java 变量名 字符串_如何使字符串值在java中调用特定的现有JButton变量名?

    所以,我知道有这样的: int number = Integer.parseInt("5"); String numtxt = Integer.toString(12); doub ...

  3. java后台icon font 图标替换

    我们知道后台有些菜单图标,一般用的是iconf font,往往免费的一套icon font系统里的图标太少,满足不了我们一些需求,当然也有人说用重复的图标不就可以了,可是作为一个资深程序员,强烈病态的 ...

  4. 学生成绩管理系统java+mysql+swing入门级项目开发

    夫陶公清风千古,余又何人,敢称庶几 代码已移至Gitee : https://gitee.com/BreezAm/edu-student 文章目录 简要: 登陆运行效果 主界面运行效果图 界面设置运行 ...

  5. springboot基于JAVA的电影推荐系统的开发与实现毕业设计源码112306

    目    录 摘要 Abstract 第1章前言 1.1研究背景 1.2研究现状 1.3系统开发目标 第2章技术与原理 2.1  JSP介绍 2.2  JAVA技术 2.3  MySQL数据库 2.4 ...

  6. (附源码)springboot基于JAVA的电影推荐系统的开发与实现 毕业设计112306

    目 录 摘 要 4 Abstract 5 第1章 前 言 6 1.1 研究背景 6 1.2 研究现状 6 1.3 系统开发目标 6 第2章 技术与原理 8 2.1 JSP介绍 8 2.2 JAVA技术 ...

  7. springboot基于JAVA的电影推荐系统的开发与实现 附源码-毕业设计112306

    目    录 摘要 4 Abstract 5 第1章前言 6 1.1研究背景 6 1.2研究现状 6 1.3系统开发目标 6 第2章技术与原理 8 2.1  JSP介绍 8 2.2  JAVA技术 8 ...

  8. Java交互界面实现计算器开发设计【附函数源码】

    使用Java开发的简易计算器,包括加.减.乘.除.平方.立方.小数等运算,适合学习GUI编程实践, 目录 控件触发时集中处理函数 操作符点击后数据转换赋值函数 计算器窗口界面函数 运算符控件 数字控件 ...

  9. Java交互界面实现计算器开发设计【附函数源码】,java反射原理hash

    在这里我们需要首先定义私有的全局变量来接收在计算器运行过程中的一些变量,如输入的数值.小数点.操作符.输出框内容.计算结果等,因此对于在计算器使用过程中可能出现的变量要对其进行一一接收.在这里我们使用 ...

  10. 基于java的信息管理系统设计与开发

    1 引 言 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 2 2 相关技术 3 2.1开发技术 3 2.2 Java简介 3 2.3 MVVM模式 3 2.4 B/S结构 ...

最新文章

  1. SpringBoot + Mybatis + Druid + PageHelper 实现多数据源分页
  2. Django创建应用和项目基本流程学习(二)
  3. OIer同样是音乐家
  4. 每天学一点儿shell:Linux三剑客——sed命令
  5. 深度学习语义分割理论与实战指南
  6. D3js(五):tooltips
  7. Web测试到底是在测什么(资料合集)
  8. CCKS 2018 | 工业界论坛报告简介
  9. [转载] Python3 数组
  10. 两种方法解决pip、conda安装库时慢的问题
  11. hunnu11543:小明的烦恼——分糖果
  12. TensorFlow学习笔记——循环神经网络
  13. 运维简历怎么写项目描述_实习的简历应该怎么写?
  14. nandflash驱动分析 针对K9GAG08U0D uboot1.1.6(上)
  15. sum在mysql是什么意思_数据库中Count是什么意思和SUM有什么区别
  16. 【无标题】C基础 2
  17. 云效告诉你如何进行研发排期,高效达成目标
  18. ROS1云课→29如何借助导航实现走迷宫机器人
  19. SuperData上线VR数据平台,做行业发展的“指明灯”
  20. matlab动态电路仿真,基于Simulink建立的RLC串联动态电路仿真模型

热门文章

  1. linux宝塔面板下安装mindoc参考
  2. COMSOL35a下载地址
  3. SAP根据采购申请,采购入库
  4. 误用分区助手的沉痛教训
  5. linux上多个CUDA切换使用(小白教程)
  6. POJO类中布尔类型的变量都不要加is前缀详解
  7. 腾讯网课下载.m3u8下载器流媒体下载
  8. php 磅和像素的换算,将g/cm³换算为磅每液量加仑(美国) (克每立方厘米换算为磅每液量加仑(美国))...
  9. jmeter使用心得(一)
  10. Java工程师技术栈