Я хочу создать наложение в Java, которое будет прозрачным , всегда сверху , и чтобы я мог щелкнуть -по . Я нашел несколько похожихсообщения об этой проблеме, но даже после их ответов у меня возникла одна проблема.
Моя проблема заключается в том, что все окно щелкает -. У меня нет проблем с тем, чтобы заставить его работать с JFrame, но как только я добавляю к нему какие-либо компоненты (JLabel или ImagePanel ), щелчок -через атрибут не не переносится на них.
Поскольку я хочу иметь фоновое изображение для своего приложения, это в основном делает код, который у меня есть, бесполезным, видя, как окно фокусируется всякий раз, когда я щелкаю область, которую покрывает текст/изображение.
Прежде чем я покажу код, который я использую, я хотел бы сначала сослаться на этиthreads , который по существу описывает именно то, что я хочу, за исключением C #.
Моя цель — создать оверлей с прозрачным изображением.png -и некоторым текстом сверху -, который будет меняться при ключевых событиях. Если он использует JFrame или любую другую библиотеку, не имеет значения. Мне нужна только совместимость с Windows.
Я также хотел бы упомянуть, что у меня есть некоторый опыт работы с Java, но я новичок в использовании 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);
}
}
Обратите внимание, что проблема не в том, что окно находится в фокусе (. хотя это результат проблемы ), но JLabel и ImagePanel не щелкают -через .