2014-10-19 64 views
2

所以,我正在制作一个程序,目前只接受一个被拖放到其中的文件。目前我正在为容器使用JFrame,但我不认为这很重要。透明的JFrame始终位于顶部,但允许在底部点击

我希望窗口在运行时始终处于顶部,这样如果将任何文件拖到屏幕的右下角,程序将处理它。但是,与此同时,我希望程序能够隐形,并且可以点击通过,这意味着您可以点击jframe下方的任何内容,但是它不可见,但仍然可以将文件拖入程序而不必做任何特别的事情。

我从来没有听说过这样的事情,但我相信它一定是可能的。我将如何做到这一点?

+1

是什么让你说这是可能的。如果我打开一个全屏应用程序并将其关注,我将永远无法将某些东西拖放到该“JFrame”上,透明与否。 – Robin 2014-10-19 11:43:08

+0

现在,它总是在最上面。所以只要没有人把它最小化,它总是处于顶峰。全屏游戏并不一定是这种情况,但我希望在任何时候都可以拖动文件。对我来说真正的诀窍是,让它变成可点击的。我可以只使用鼠标监听器,并在程序后面为用户点击java?而不是用户是一个点击,Java的做到这一点? – PulsePanda 2014-10-19 11:45:05

+1

假设你可以制作一个全屏透明的'JFrame'并允许点击通过它,这意味着你点击它下面的应用程序。这会把重点放在那个应用程序上,并且通过'JFrame.alwaysOnTop(true);'把它带到前面并且把'JFrame'带到后面 – Robin 2014-10-19 11:47:51

回答

1

我在前几天做了一个启动画面,它是可点击的。您可能想使用Photoshop或其他软件制作完全透明的图像。这里是代码:

private BufferedImage splash; 

/** 
* Create the frame. 
*/ 
public Splash() { 
    this.setUndecorated(true); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    setSize(500, 500); 
    setLocationRelativeTo(null); 

    try { 
     splash = ImageIO.read(getClass().getResource("/images/transparent.png")); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    // Apply a transparent color to the background 
    // This is REALLY important, without this, it won't work! 
    setBackground(new Color(0, 255, 0, 0)); 
    getContentPane().setBackground(Color.BLACK); 
    add(new JLabel(new ImageIcon(splash))); 
    setVisible(true); 
} 
+0

看起来像Splash类应该扩展JFrame。 – 2014-12-17 18:09:51

+0

是的,它应该。 – theTechnoKid 2014-12-17 20:44:39

+0

我一定会试试这个,当我回家时,更新来:) :) – PulsePanda 2014-12-18 17:02:26

相关问题