- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以用Java JFrame
或其他组件为所有鼠标事件创建完全透明的组件?
在我的应用程序中,我只有一个窗口,它是JFrame
的实例。在此窗口中,我还有许多其他JComponent
,其中有些具有更多的JComponent
等。但是重要的是,主窗口只有一个PopUpFrame
,它是继承JFrame
。直到我将光标移到带有缩略图的特定PopUpFrame
上之前,此JComponent
才可见,当此JComponent
捕获mouseEntered(MouseEvent event)
事件时,它将使该PopUpFrame
可见并将其加载到完整图像中。我使PopUpFrame
随光标移动,但问题是当光标移到缩略图PopUpFrame
之外。例如,当带有完整图像的PopUpFrame
在光标的右下侧并且我将鼠标左移和/或上移时,一切正常。当我向右和/或向下移动鼠标时,光标移到PopUpFrame
上,因此PopUpFrame
被“冻结”。当然,我可以在此PopUpFrame
中添加一个额外的事件,即使将光标放在它上面,它也将随光标一起移动,但这不是解决方案。 PopUpFrame
仅在光标位于缩略图上时才可见。如果PopUpFrame
可以捕获事件并涵盖缩略图,则我无法正确捕获缩略图中的mouseExited(MouseEvent event)
。
因此,有什么方法可以使JFrame对鼠标事件完全透明,但仍使其在屏幕上可见(也许类似于JavaFX中的setMouseTransparent
)。并且,如果不可能,如何创建具有完整图像(仅图像)的工作弹出窗口,该图像仅在光标位于缩略图上并且随光标移动时才可见。
这是我的代码。
import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MainExample {
private static MainWindow window;
public static void main(String args[]) {
window=new MainWindow();
}
}
class MainWindow extends JFrame {
private static PopUpFrame popup=new PopUpFrame();
private static ThumbnailPanel mini=new ThumbnailPanel("panel");
public MainWindow() {
setVisible(true);
setSize(600, 400);
setLayout(null);
add(mini);
mini.setLocation(50, 75);
}
public static void previewPopUpShow(Point cursor) {
popup.refresh(cursor.x, cursor.y);
}
public static void previewPopUpHide() {
popup.setVisible(false);
}
public static void previewPopUpLoad(String url) {
popup.setImage(url);
}
}
class ThumbnailPanel extends JComponent {
private JPanel thumbnail=new JPanel();
public ThumbnailPanel(String name) {
setVisible(true);
setOpaque(false);
setSize(80, 45);
setBorder(null);
setLayout(null);
add(thumbnail);
thumbnail.setBackground(Color.RED);
thumbnail.setBorder(null);
thumbnail.setBounds(0, 0, 70, 40);
thumbnail.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent entered) {
MainWindow.previewPopUpLoad("");
}
public void mouseExited(MouseEvent exited) {
MainWindow.previewPopUpHide();
}
});
thumbnail.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent moved) {
MainWindow.previewPopUpShow(moved.getLocationOnScreen());
}
});
}
}
class PopUpFrame extends JFrame {
private ImageIcon full;
private JLabel fullLabel;
public PopUpFrame() {
setSize(440, 260);
setResizable(false);
setUndecorated(true);
setVisible(false);
setFocusable(false);
setAlwaysOnTop(true);
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent moved) {
MainWindow.previewPopUpShow(moved.getLocationOnScreen());
}
});
}
void refresh(int x, int y) {
setLocation(x, y);
}
void setImage(String url) {
full=new ImageIcon("full_image.png");
fullLabel=new JLabel();
fullLabel.setOpaque(true);
fullLabel.setBackground(Color.WHITE);
this.getContentPane().add(fullLabel);
this.setVisible(true);
}
}
最佳答案
如果要拦截(并丢弃)所有鼠标事件到JFrame,请尝试在Glass窗格中执行此操作(有关如何使用这些事件的示例,请参阅Java教程)。
关于java - JFrame对事件是半透明/透明的,但仍然可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641861/
我在 NSWindow 中有一个 NSView,NSWindow 是标准的 Mac 灰色/米色。 我想让 NSView 稍微半透明和灰色(例如 alpha 为 0.2 的灰色),以便 NSWindow
我对 openGL 中的 alpha 混合有疑问... 我尝试了一些绘制透明对象的方法...通过在绘制透明面之前禁用 GL_DEPTH_TEST 并在绘制透明面后再次重新启用 GL_DEPTH_TES
我将导航栏自定义为清除。所以我将backgroundImage设置为UIImage()并且isTranslucent = true。所以我遇到的问题是:这就是我在 xib 中设置的。现在 TopCon
我一直在研究这个,似乎唯一的方法是使用 UIActionSheet,问题是我的 UIActionSheet 只覆盖了一半的屏幕,我的代码是: MyViewController *myVC = [[my
我希望在我的主要 Activity 中使用半透明的状态栏和导航栏,而所有其他 Activity 都使用 Material 设计。 到目前为止我得到的是: if (Build.VERSION.SDK_I
我可以在不使用私有(private)方法等的情况下获得对 UIAlertView 的 backgroundImageView 的引用。但是我的 alpha 设置为 1.0 被忽略了。控件仍然有点半透明
我正在研究 UIWebView,我想要的是 webView 不要过度说唱 View 。 所以这就是问题所在。我设置了 UIWebView ,状态栏覆盖在内容上。 我该如何处理?我在制作 UIImage
我正在为一款小型 2d 游戏在其他图像之上绘制半透明图像。目前要混合图像,我正在使用此处找到的公式:https://en.wikipedia.org/wiki/Alpha_compositing#Al
我正在尝试将 Splash Screen 4 制作成 Win 应用程序。 我的设置: 表单边框样式设置为无。起始位置是屏幕中心。表单的背景图像设置为 PNG 文件,具有圆形边缘和“内置”投影。 在我设
(此问题发生在使用 Java 1.7.0_45 的 Mac OS X 10.10 上。在使用 Java 1.7.0_55 的 Windows 7 上我没有遇到此问题。) 我有一个半透明的“始终在最前面
如果您知道学习如何使用 Adobe Flash 为 iPhone 应用程序甚至 Air 应用程序创建此类效果的任何良好起点,那将会有很大帮助。 具体来说,我希望它不保存叠加层,只在用户从相机拍摄图
我有以下行: label.setBackground(new java.awt.Color(0, 150, 0, 50)); 我将它放在 MouseAdapter 中的 mouseRe
我正在制作幻灯片。我希望导航栏看起来与照片应用程序中的一样。我如何获得这种透明度? 我试过: - (void)drawRect:(CGRect)rect { [[UIColor clearCo
我试图在半透明的 div 上获取文本。这是在 Chrome 中,如果相关(即 Chrome 错误)。出于某种原因,每当文本位于 div 顶部(移动到负边距顶部)时,它也是部分透明的。 HTML 如下(
我在 NSVisualEffectView 上有 2 个 NSButton。第一个按钮图像是系统 NSEnterFullScreenTemplate 图像。第一个按钮上的图像是半透明的。 在第二个按钮
我想在RelativeLayout中创建一个RelativeLayout半透明。 它是页脚的项目。它始终可见,但我只想使其黑色的透明度为 50%。 我尝试过使用#11000000 Alpha chan
我正在尝试使用 Qt (C++) 应用程序跨操作系统完成以下任务。运行该程序后,会弹出一个新窗口,一个全屏 QWidget。现在我希望它是透明的/透明的,这样用户就不会真正看到它。在这个“层”上,用户
所以,我的目标是绘制具有半透明像素的 Sprite 。 首先,我使用仅渲染不透明像素的着色器渲染 Sprite 。然后,我禁用深度缓冲区写入并使用仅渲染半透明(或透明 Sprite )的着色器渲染相同
CSS .popup { z-index: 10000; filter: alpha(opacity=40); -moz-opacity: .40; backgroun
我正在尝试创建一个 lightbox effect在我的应用程序中。为实现这一点,我有一个 UserControl,其中一个面板代表半透明覆盖层,另一个面板托管所有必要的内容。 当我显示此 UserC
我是一名优秀的程序员,十分优秀!