2014-03-03 56 views
1

我需要做一個JOptionPane(或類似的東西)與一個JTextField和兩個RadioButtons,但我不知道這是可能的。我有一個不同選項的主框架,當我點擊「操作」時,我應該調用對話框。我怎樣才能做出這個對話?如何做一個自定義JoptionPane

+0

看看這個教程:http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html – mdewitt

+0

使用擴展的JDialog類。使用.setModal(true)將其設置爲模態,然後將其顯示給用戶。你可以設計它的init方法來隨心所欲地構建它,並且它會像JOptionPane一樣工作,假設你暴露類似.getDialogResult()的東西,它根據點擊的內容返回true/false,.getValue()它返回用戶輸入數據。 –

回答

4

一個textfield和兩個單選按鈕應該足夠小以適合JOptionPane,因此最好繼續使用它。

將帶有兩個單選按鈕的JTextField添加到JPanel中,並將該JPanel添加爲顯示在JOptionPane中的組件。可能希望使用只顯示「Ok」的選項窗格,其中一個單選按鈕已被選中。

爲了安全起見,您可能希望將Janel包裝到JScrollPane中,因爲我不認爲JOptionPanes是可重定義的,並且取決於用戶是否通過命令行選項或可訪問性設置更改了外觀和感覺,那麼您可能會切斷一些GUI組件。

+0

滾動窗格不應該是必要的 - 列出的組件應該是'pack()'罰款(每次顯示時都會爲您提供'JOptionPane') –

+0

僅供參考'JOptionPane'可以調整大小:'op =新的JOptionPane(...)','dlg = op.createDialog();''dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);'最後:'dlg.setResizable(true);''dlg.pack(); ' –

1

就我個人而言,我不喜歡使用JOptionPane。沿着使用JDialog的路徑走下去。

它可以是簡單的:

 JPanel innerPanel = new JPanel(new FlowLayout()); 
     // Add components and listeners here 

     JDialog dialog = new JDialog(); 
     dialog.add(innerPanel); 
     dialog.setModal(true); 
     dialog.pack(); 
     dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

     dialog.setVisible(true); 
     dialog.addWindowListener(new WindowAdapter() 
     { 
      @Override 
      public void windowClosing (WindowEvent e) 
      { 
       super.windowClosing(e); 
      } 
     }); 
+0

我在項目中添加了一個JDialog,並對其進行了配置,但我不知道如何從JFrame調用JDialog,並且需要將幀中的變量傳遞給對話框。我使用Eclipse和Window Builder插件,它爲包中的每個組件創建一個類。我想我沒有解釋得很好。 – temerariomalaga

+0

我不熟悉Window Builder。希望它有一種插入你自己的定製邏輯的方法。在JFrame定製邏輯中,您需要創建對話框。就像'MyJDialog mydiaolog = new MyJDialog();' –

+0

好吧,我試試。我全部使用界面自動完成。我會做對話並複製代碼。謝謝你。 – temerariomalaga

相關問題