2012-10-04 117 views
4

我有問題顯示模式對話框和忙光標在同一時間。模態對話框阻止正確的光標狀態

我顯示一個模式對話框,並將主框架的光標置於「等待狀態」。一切都很好,除非如果鼠標退出主框架並再次進入,它永遠不會回到「等待狀態」。如果對話框不是模態的,這個錯誤(?)不會發生。

測試程序:

public static void main(String[] args) { 
     final JFrame frame = new JFrame(); 
     frame.setSize(new Dimension(500, 500)); 

     final JDialog dialog = new JDialog(frame); 
     dialog.setModal(true); 

     frame.add(new JButton(new AbstractAction("Dialog") { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
       dialog.setVisible(true); 
      } 
     })); 
     frame.setVisible(true); 
    } 

回答

2

frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

  • Cursor是possibe改變(或更改可見),查看了focus窗口,這是模態基本屬性窗口或ModalityType s,

它永遠不會回到「等待狀態」。如果對話框不是模態的,這個錯誤(?)不會發生。

  • 孩子JDialog關閉後,再JFrame可以通過移除setModal()或改變改變ModalityType S到ModalityType.MODELESS

改變 CursorWAIT_CURSOR

  • 你看到的改變Cursor

  • +0

    好的,thx,我不知道!問題是我想在模態對話框中添加一個進度條,並讓光標在整個應用程序中等待,直到對話框消失。我怎麼能點那個? – paranoia25

    +0

    @ paranoia25有(移動邏輯)更改彈出窗口的光標(JDialog在你的情況下),讓它JFrame .... :-),[可能對newbee很難,可能缺乏EDT](http:// stackoverflow.com/questions/12108127/getting-the-cancel-event-of-java-progressmonitor/12108209#12108209),在這個論壇上搜索SwingWorker和JProgressBar,...每日回答相似問題 – mKorbel