Java: Wykonywanie kliknięć przez okno (w tym tekst / obrazy)
Chcę utworzyć nakładkę w Javieprzezroczysty, Zawsze na górzei to mogękliknij. Znalazłem kilkapodobny posty o tym problemie, ale nawet po ich odpowiedziach mam jeden problem.
Moim problemem jest zrobieniecałe okno kliknij. Nie mam żadnego problemu, aby działał z JFrame, ale razdodaj dowolne składniki do niego (JLabel lub ImagePanel),atrybut click-through nie przenosi się do nich.
Ponieważ chcę mieć obraz tła dla mojej aplikacji, to zasadniczo sprawia, że kod jest bezużyteczny, widząc, jak okno skupia się za każdym razem, gdy klikam obszar, który obejmuje tekst / obraz.
Zanim pokażę kod, którego używam, najpierw chciałbym się odwołaćte wątki co dokładnie opisuje dokładnie to, czego chcę, z wyjątkiem C #.
Moim celem jest stworzenie nakładki z przezroczystym obrazem .png i tekstem na wierzchu, który zmieni się na kluczowych wydarzeniach. Jeśli używa JFrame lub innej biblioteki, nie ma znaczenia. Potrzebuję go tylko z systemem Windows.
Chciałbym również wspomnieć, że mam pewne doświadczenie z Javą, ale jestem nowicjuszem w używaniu JFrame.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import com.sun.jna.platform.WindowUtils;
public class Overlay {
public static void main(String[] args) {
JFrame frame = new JFrame("Overlay Window");
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false);
frame.setLocation(400, 400);
frame.getContentPane().setLayout(new java.awt.BorderLayout());
JLabel textLabel = new JLabel("I'm a label in the window", SwingConstants.CENTER);
frame.getContentPane().add(textLabel, BorderLayout.CENTER);
frame.pack();
System.setProperty("sun.java2d.noddraw", "true");
WindowUtils.setWindowTransparent(frame, true);
WindowUtils.setWindowAlpha(frame, 1.0f);
//Using AWTUtilities gives the same result as WindowUtils
//AWTUtilities.setWindowOpaque(frame, false);
//AWTUtilities.setWindowOpacity(frame, 1.0f);
frame.setVisible(true);
}
}
Zauważ, że problem jestnie o tym, że okno jest skupione (choć jest to wynikiem problemu), ale oJLabel i ImagePanel nie są klikalne.