我想知道如何在最新Java版本中获得透明的JFrame。目前,您只能使用.setOpacity();如果框架未装饰。我不喜欢未装饰的框架,所以我想知道如何绕过这个限制并将框架的不透明度设置为0.5f同时保持标题栏,调整大小选项等我在这里阅读了文档:http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html.该代码仅适用于Java6,不再运行。正如我所说,错误是:Exceptioninthread"AWT-EventQueue-0"java.awt.IllegalComponentStateE
我能够使JFrame完全透明,而JButton部分透明,直到我将鼠标移到按钮上(不要单击)并将鼠标从按钮上移开(通过MouseListener调用MouseExited)。发生的情况是再次绘制JButton的背景,因此在按钮上和按钮上移动几次鼠标后,按钮完全不透明。publicclassButtonExampleextendsJWindow{publicButtonExample(){JButtonBut=newJButton("Testing");But.setBackground(newColor(0,0,0,200));But.setForeground(newColor(70,
我有一个JLabel,它会在鼠标进入时更改其背景颜色。我遇到的问题是我希望JLabel在鼠标退出后变得透明。有没有我可以用来完成这个的声明? 最佳答案 在德国这是一个慵懒的假期,所以结合这两个答案:finalJLabellabel=newJLabel("somelabelwithanicetext");label.setBackground(Color.YELLOW);MouseAdapteradapter=newMouseAdapter(){/***@inherited*/@OverridepublicvoidmouseEnter
我一直在尝试为我正在开发的小游戏实现基本的文本气泡。不想太花哨,我从一个基本的圆角矩形开始,它的边框包含一些文本:然后,我决定文本气泡应在预设时间后淡出。这就是我偶然发现问题的地方:当我尝试在测试窗口中显示气泡时,一切正常,但是当我在游戏中显示它们时,气泡消失时出现失真。我又测试了一些,调试了一下,发现这两种情况的唯一区别是,在测试窗口中,我使用paintComponent方法的Graphics绘制气泡,而在游戏中,我使用BufferedImages模拟图层并使用image.createGraphics中的图形。然后我可以成功地复制错误:在这里,您会看到当左侧的气泡消退时,其圆角与消退
是否可以在Java中检查png图像是否具有透明度?如果png图像不包含透明度,我需要将所有png图像转换为jpg。Java中有检查这个的方法吗? 最佳答案 您可以检查图像的颜色模型是否包含alphachannel:BufferedImageimg=ImageIO.read(/*fromsomewhere*/);if(img.getColorModel().hasAlpha()){//imghasalphachannel}else{//noalphachannel}请注意,此代码仅检测已使用alphachannel保存的图像。具有al
是否可以制作一个具有透明背景的JFrame并在其上绘制图像,以便只有图像可见而没有边框或背景? 最佳答案 是的,这在很多方面都是可能的。这是其中之一:setUndecorated(true);setBackground(newColor(1.0f,1.0f,1.0f,0.5f));Color的构造函数中的第4个float(我设置为0.5f)是alphachannel。它可以是0.0f-1.0f,具体取决于您想要的透明度。 关于java-透明JFrame背景,我们在StackOverflo
我正在尝试使用Java创建一个覆盖整个屏幕的全屏窗口。此窗口还必须具有一定的透明度(大约30%-50%的透明度)。当说整个屏幕时,我的意思是它涵盖了所有内容(包括OSX/Linux/Windows中的停靠栏/任务栏/菜单栏),而当我说透明度时,我的意思是实时透明度,而不仅仅是被黑的屏幕截图。这是我知道/尝试过的:使用Java全屏API:虽然它创建了一个真正的全屏,但您不能使用它来实现某些透明度(只有不透明的颜色)。一种hack是截取整个桌面的屏幕截图并将其设置为窗口的背景,但这意味着它不是实时透明的。设置窗口大小以匹配屏幕尺寸:当它填满整个屏幕时,在某些操作系统(例如MacOSX)中,
我目前正在开发一个kiosk风格的Java程序来显示天气、时间、预报等。这是程序应该的样子的截图(时间更新前的截图)各个部分被创建为JPanel,并覆盖了paintComponent()方法。他们绘制渐变标题和半透明背景。但是,当我更改其中一个面板的内容时,以前的内容会保留下来,而不是被删除。示例如下:可以看到,当时间从11:51变为11:52时,数字重叠了,背景变浅了(因为重绘了半透明背景)图形错误我应该怎么做才能防止这种重叠?最终,我宁愿在单个面板更新其内容时不必重绘整个屏幕。我宁愿只重画那个特定的部分。重新绘制背景很容易,然后再绘制其中的所有组件。更新有几个答案涉及清除要绘制的区
JDK7添加了一个新的透明度slider到JColorChooser:问题是我不想让我的用户选择透明颜色。不幸的是,似乎没有一种简单的方法来禁用slider。消除透明度的一种方法是仅根据所选颜色创建一种新颜色,但删除alpha值。然而,这会给用户一种错误的印象,因为slider现在实际上什么都不做,我不希望周围有一个无用的UI元素。所以我的问题是,摆脱透明度slider的最佳方法是什么?P.S.:IMO,他们只是添加slider并将其设为默认行为,这很奇怪。这可能会导致JDK6程序中出现很多错误,这些错误不期望颜色选择器返回具有alpha值的颜色。 最佳答案
我将使用BufferedImage的getRGB方法。我想检查图像的像素并查看其中哪些像素具有透明度(通常我将拥有的透明像素将完全透明)。如何从getRGB返回的int中获取它? 最佳答案 BufferedImageimg=....publicbooleanisTransparent(intx,inty){intpixel=img.getRGB(x,y);if((pixel>>24)==0x00){returntrue;}returnfalse;}当然img必须采用正确的格式TYPE_4BYTE_ABGR或某种支持alphachan