मैं एक अवांछित हमेशाऑनटॉप फ्रेम में एक प्रकार का टूलबार बनाने की कोशिश कर रहा हूं। इस प्रकार, मैं चाहता हूं कि मेरा फ्रेम मेरे मुख्य फ्रेम के शीर्ष पर हो, लेकिन अन्य प्रोग्राम्स से फ्रेम के शीर्ष पर नहीं। मैं इस कोड की कोशिश की:मेरे प्रोग्राम के शीर्ष पर हमेशा फ्रेम
public class Test {
private static JFrame mainFrame;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
mainFrame = new JFrame("test");
mainFrame.setSize(800,600);
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
mainFrame.setVisible(true);
A a = new A();
}
});
}
public static class A extends JDialog {
public A() {
super(mainFrame);
setAlwaysOnTop(true);
setFocusable(false);
setSize(80,60);
setVisible(true);
}
}
}
लेकिन JDialog के उपयोग और मालिक, अन्य अनुप्रयोगों के शीर्ष पर फ्रेम ठहरने precising के बावजूद (कम से कम उबंटू के साथ हो सकता है कि परिणाम अन्य ओएस के साथ अलग है।?)
संपादित: ठीक है, मैं अपने संवाद के लिए इस कोड की कोशिश की:
public static class A extends JDialog {
public A(String name) {
super(mainFrame, name);
setAlwaysOnTop(true);
setFocusable(false);
setSize(80, 60);
setVisible(true);
mainFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowActivated(WindowEvent e) {
A.this.setAlwaysOnTop(true);
}
@Override
public void windowDeactivated(WindowEvent e) {
// A.this.setAlwaysOnTop(false);
A.this.toBack();
}
});
}
}
मुद्दा अब है कि जब मुख्य विंडो ढीला ध्यान, संवाद वापस फोकस चुरा और मैं क्यों समझ में नहीं आता है। उदाहरण के लिए, मैं अपना ऐप चलाता हूं, मैं फ़ायरफ़ॉक्स पर स्विच करने का प्रयास करता हूं, फ़ायरफ़ॉक्स प्रकट होता है और मुख्य फ्रेम को कवर करता है, लेकिन एक संवाद स्क्रीन पर फोकस करता है और रहता है। अब, अगर मैं फिर से फ़ायरफ़ॉक्स का चयन करता हूं, तो संवाद आखिरी बार गायब हो जाएगा। क्या आप मुझे समझा सकते हैं कि संवाद क्यों फोकस करता है?
धन्यवाद
मुझे लगता है कि आप JNI के माध्यम से देशी हैक किसी तरह का उपयोग करने के लिए उपाय करने की आवश्यकता होगी/जेएनए – MadProgrammer
'कक्षा ए जेएफआरएएम' बढ़ाता है? –
यदि आप 'setAlwaysOnTop() 'को हटाते हैं तो क्या होता है? आम तौर पर आप फ्रेम को अन्य फ्रेम के शीर्ष पर रहना चाहिए। 'SetAlwaysOnTop()' ओएस – GameDroids