2011-12-13 10 views
6

अगर एक JFrame विंडो छोटी, वहाँ इसे वापस लाने के लिए ध्यान केंद्रित करने के लिए कोई तरीका है?जावा - दिखाएँ एक कम से कम JFrame खिड़की

मैं इसे एक निश्चित बिंदु क्लिक करने के लिए प्राप्त करने के लिए कोशिश कर रहा हूँ, तो यह बहाल।

  while (isRunning) { 
       start = System.currentTimeMillis(); 
       frame.setState(Frame.ICONIFIED); 
       robot.mouseMove(clickX, clickY); 
       robot.mousePress(InputEvent.BUTTON1_MASK); 
       frame.setState(Frame.NORMAL); 
       Thread.sleep(clickMs - (System.currentTimeMillis() - start)); 
      } 
+0

अपने JFrame खिड़की माता-पिता या बच्चे है? – Pritom

+0

यह या तो हो सकता है। अगर इसे एक या दूसरे होने की जरूरत है, तो मैं इसे बदल सकता हूं। – Stripies

+0

मैं समझने में असमर्थ हूं कि आप क्या करने की कोशिश कर रहे हैं। – Pritom

उत्तर

12

आप iconified होने से वापस लाना चाहते हैं, तो आप सिर्फ अपने राज्य के लिए सेट कर सकते हैं normal:

JFrame frame = new JFrame(...); 
// Show the frame 
frame.setVisible(true); 

// Sleep for 5 seconds, then minimize 
Thread.sleep(5000); 
frame.setState(java.awt.Frame.ICONIFIED); 

// Sleep for 5 seconds, then restore 
Thread.sleep(5000); 
frame.setState(java.awt.Frame.NORMAL); 

here से उदाहरण।

वहाँ भी WindowEvents जब भी राज्य बदल गया है ट्रिगर कर रहे हैं कि कर रहे हैं और एक WindowListener इंटरफ़ेस है कि इन इस मामले triggers.In संभालती है, तो आप उपयोग कर सकते हैं:

public class YourClass implements WindowListener { 
    ... 
    public void windowDeiconified(WindowEvent e) { 
    // Do something when the window is restored 
    } 
} 

आप किसी अन्य प्रोग्राम के राज्य परिवर्तन की जांच के लिए इच्छुक रहे हैं, तो , "शुद्ध जावा" समाधान नहीं है, लेकिन केवल विंडो की ID प्राप्त करने की आवश्यकता है।

+1

मैंने कोशिश की कि सिर्फ परीक्षण के लिए, और यह काम किया। लेकिन जब मैंने इसे अपने वास्तविक कार्यक्रम में लागू किया, तो यह काम नहीं करता है। – Stripies

+0

यदि आप प्रश्न में अपना कोड पोस्ट करते हैं, तो हम इसे काम करने के लिए इसे संशोधित कर सकते हैं। – Jon

+0

मैंने मुख्य पोस्ट संपादित किया। – Stripies

5

आप सामान्य करने के लिए राज्य सेट कर सकते हैं:

frame.setState(NORMAL); 

पूर्ण उदाहरण:

public class FrameTest extends JFrame { 

    public FrameTest() { 
     final JFrame miniFrame = new JFrame(); 
     final JButton miniButton = new JButton(
      new AbstractAction("Minimize me") { 
      public void actionPerformed(ActionEvent e) { 
       miniFrame.setState(ICONIFIED); 
      } 
     }); 

     miniFrame.add(miniButton); 
     miniFrame.pack(); 
     miniFrame.setVisible(true); 

     add(new JButton(new AbstractAction("Open") { 
      public void actionPerformed(ActionEvent e) { 
       miniFrame.setState(NORMAL); 
       miniFrame.toFront(); 
       miniButton.requestFocusInWindow(); 
      } 
     })); 

     pack(); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new FrameTest(); 
    } 

} 
+0

@AndrewThompson: अच्छा सुझाव है, मैं उन्हें और एक बटन कम करने के लिए जोड़ा गया। – Jonas

+0

शोर हटा दिया गया। मैं वोट दूंगा, लेकिन मैंने पहले ऐसा किया था। :) –

संबंधित मुद्दे