我想创建一个半透明的JPanel.我通过简单地使用颜色构造函数的RGBA值来完成它,但问题是当我使用事件处理不正确地唤醒时.我的要求是一个半透明的Jpanel,当鼠标进入它的边框,这个面板变得可见,如果鼠标退出边框不可见.我已经通过以下代码做到这一点,但问题是它不能正常工作的透明背景(RGBA),但它可以正常工作的RGB颜色.

import javax.swing.*;

import javax.swing.border.*;

import java.awt.*;

import java.awt.event.*;

public class MDCW extends JFrame {

private JPanel contentPane;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

MDCW frame = new MDCW();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public MDCW() {

setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100,100,1013,551);

contentPane = new JPanel();

contentPane.setBackground(new Color(0,139,139));

contentPane.setBorder(new EmptyBorder(5,5,5));

setContentPane(contentPane);

contentPane.setLayout(null);

final JPanel panel = new JPanel();

panel.setBackground(new Color(0,50));

panel.addMouseListener(new MouseAdapter() {

@Override

public void mouseEntered(MouseEvent e) {

panel.setBorder(new LineBorder(new Color(255,255,255),5));

}

@Override

public void mouseExited(MouseEvent e) {

panel.setBorder(null);

}

});

panel.setBounds(360,155,215,215);

contentPane.add(panel);

final JPanel panel_1 = new JPanel();

panel_1.setBackground(new Color(0,0));

panel_1.addMouseListener(new MouseAdapter() {

@Override

public void mouseEntered(MouseEvent e) {

panel_1.setBorder(new LineBorder(new Color(255,5));

}

@Override

public void mouseExited(MouseEvent e) {

panel_1.setBorder(null);

}

});

panel_1.setBounds(84,215);

contentPane.add(panel_1);

}

}

JPanel不支持半透明背景.需要两个步骤来处理这个问题:

>首先,要使任何正常运行的透明度,你必须在面板上设置不透明(false);否则你会有毛刺,因为假设一个不透明的面板完全覆盖了它的界限下面.

>但是,当opaque为false时,面板也不会绘制其背景(!),所以您必须在paintComponent中绘制背景.

这是一个下拉替换类,它将处理这两个步骤.

private class TransparentPanel extends JPanel {

{

setOpaque(false);

}

public void paintComponent(Graphics g) {

g.setColor(getBackground());

Rectangle r = g.getClipBounds();

g.fillRect(r.x,r.y,r.width,r.height);

super.paintComponent(g);

}

}

如果我将第一个面板创建更改为:

final JPanel panel = new TransparentPanel();

java jpanel 半透明_java – 透明JPanel相关推荐

  1. java jpanel隐藏_java – 绘制JPanel隐藏菜单

    我有一个JPanel,在其上执行自定义绘画,可能需要15秒. 问题是当我在绘制JPanel的同时点击一个菜单时,绘画正在菜单上完成,并且选项不可见. (见图中扭曲的文字) 如果我在绘画完成后单击菜单, ...

  2. java jpanel 叠加_java – 如何在JPanel上叠加,调整大小和居中组件?

    首选大小 JProgressBar由UI委托 BasicProgressBarUI指定.下面的示例说明了各种布局管理器的效果. FlowLayout只使用UIManager默认值ProgressBar ...

  3. java jpanel 缓冲画图_Java:Jpanel 缓冲区 图像

    这是一个非常常用的东西 主要是重写JPanel中的paint(Graphics g)方法实现的. 0 写一个类继承JPanel public class WSModePlane extends JPa ...

  4. JAVA图形编程Swing之——JPanel绘图

    JAVA图形编程Swing之--JPanel绘图     一直搞不清怎么在JPanel中绘2D图像,主要是不知怎样得到Graphics类的对像来画图,今天查了查资料,测试N种方法,终于搞明白.下面做一 ...

  5. JAVA SWING之JFrame和JPanel布局

    初学JAVA的时候学习过SWING,每次写程序就直接复制Jframe和Jpanel设置,到现在也不清楚它们有什么关系,才回顾学习.Swing虽然是很老的技术了,但也有很多工具是Swing写的例如Jet ...

  6. java五子棋棋盘_java五子棋项目(一)

    一.实现功能(人人对战模式) 1.点击开始下棋,黑棋先手,再下白棋 2.拖动界面,棋子和棋盘依旧存在(实现重绘) 2.每下一颗棋子判断输赢,获胜方弹出游戏提示 3.点击悔棋按钮,实现悔棋 4.点击认输 ...

  7. java label 边框_java中怎么给jlabel设置边框,多谢!

    这是我找到的例子 import java.awt.Image; import java.awt.Rectangle; import java.awt.TextArea; import java.awt ...

  8. java swing背景_java swing 设置背景图片的方法一

    下面是偶写着玩的下测试的代码:(不好之处,请多多指教,大家共同进步 ) import java.awt.*; import javax.swing.*; public class ImageDemo ...

  9. JAVA下GUI设置透明背景图片窗口(不覆盖文本内容)

    之前学过Java的GUI,写过简单的例子.昨天朋友问怎么能为窗口设置背景图片,且让文字在背景上边显示,挺简单的要求折腾了好一会儿才实现-mark一下. 一.最终效果图: 二.源码 public cla ...

最新文章

  1. UWP: ListView 中与滚动有关的两个需求的实现
  2. python中循环结构关键字_Python的循环结构,也简单!
  3. MaxCompute Mars 完全指南
  4. 小小智慧树机器人_国网营业厅“AI新势力”,科沃斯商用机器人解锁智慧服务新模式!...
  5. 浙江移动智能语音服务器,接口说明
  6. 读取hdr图像_HDR和蓝光哪个更清晰?画质更好?
  7. apache ii评分怎么评_APACHEⅡ评分系统
  8. 【Java就业培训教程】——String类的学习
  9. “快易需求系统”数据库设计心得
  10. windows当服务器不稳定,Win10上网不稳定经常掉线该如何解决?方法分享
  11. WinDbg 符号下载错误解决方案
  12. 索尼xz1c 日版融卡扩容经验分享(无需root,索尼XZP机型也适用)
  13. IT通过什么途径去美国工作?
  14. 计算机网络——各层次网络互联设备
  15. maven本地仓库设置
  16. Unity3D魔方游戏如何完成魔方的旋转
  17. 信息时代的生活到底给我们带来了什么?
  18. 秀下有关JavaScript的专业技能,走过路过不要错过!
  19. 计算机毕业设计java课程设计程序设计SSM框架网上书城全套含微信支付
  20. linux将时钟放在桌面上的,小技巧:Linux个性化面版时钟显示

热门文章

  1. 海思Hi3516C V500R001C02SPC002-sdk完整开发包
  2. linux互斥锁和PV原语
  3. 修改Oracle默认端口1521
  4. matlab高级教程教材,MATLAB语言高级编程 PDF_IT教程网
  5. java实时监听mysql_Java 中能实现监听数据库吗?
  6. 操作MYSQL日期格式年 或 月 或 日
  7. 使用hutool-all进行邮件发送报错Could not connect to SMTP host: smtp.qq.com, port: 465
  8. Godot Engine:街霸隆冲击波(预告片儿)
  9. LLE原理及推导过程
  10. easyPOI导出文件到指定目录