2011-12-13 40 views
6

Nếu cửa sổ JFrame được thu nhỏ, có cách nào đưa nó trở lại tiêu điểm không?Java - Hiển thị cửa sổ JFrame thu nhỏ

Tôi đang cố gắng nhấp vào một điểm nhất định, sau đó khôi phục.

  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

Cửa sổ jframe của bạn có phải là cha mẹ hoặc con không? – Pritom

+0

Nó có thể là một trong hai. Nếu nó cần phải là một hoặc khác, tôi có thể thay đổi nó. – Stripies

+0

Tôi không thể hiểu những gì bạn đang cố gắng làm. – Pritom

Trả lời

12

Nếu bạn muốn đưa nó trở lại từ việc iconified, bạn có thể chỉ cần đặt trạng thái của nó để 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); 

Ví dụ từ here.

Ngoài ra còn có WindowEvents được kích hoạt bất cứ khi nào nhà nước được thay đổi và một giao diện WindowListener để xử lý những triggers.In trường hợp này, bạn có thể sử dụng:

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

Nếu bạn đang muốn kiểm tra sự thay đổi trạng thái của một chương trình khác , không có giải pháp "thuần Java", nhưng chỉ yêu cầu nhận được cửa sổ ID.

+1

Tôi đã thử rằng chỉ để thử nghiệm, và nó đã làm việc. Nhưng khi tôi thực hiện nó vào chương trình thực tế của tôi, nó không hoạt động. – Stripies

+0

Nếu bạn đăng mã của bạn trong câu hỏi, chúng tôi có thể sửa đổi nó để làm cho nó hoạt động. – Jon

+0

Tôi đã chỉnh sửa bài đăng chính. – Stripies

5

Bạn có thể thiết lập trạng thái bình thường:

frame.setState(NORMAL); 

Full dụ:

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: Các đề xuất hay, tôi đã thêm chúng và một nút để giảm thiểu. – Jonas

+0

Đã xóa tiếng ồn. Tôi muốn bỏ phiếu, nhưng tôi đã làm điều đó trước đây. :) –

Các vấn đề liên quan