2013-01-19 95 views
7

在我的GUI項目中有一個方法用於顯示其上有多個組件的JOptionPane,這些組件中的其中2個爲ButtonGroups,其中每個組件有,第一組中第一個按鈕被選中默認情況下,在第二組中默認選擇第二個按鈕,在第二組中我希望禁用第一個按鈕,直到選擇第一組中的第二個按鈕,即如果用戶對BG1中的默認選擇滿意,那麼他們不能在BG2中進行選擇,只有當他們在BG1中進行第二次選擇時,他們才能在BG2中選擇其他選項。更新JOptionPane以反映組件狀態更改

這種類型的行爲可能與JOptionPane

一直在尋找JDialog,JOptionPane的教程和做其他研究,但這些案例都沒有證明有幫助。如果有人可以給我一個方向,以一個可能的解決方案,將是一個夢幻般的...

+2

*「是這種類型的行爲可能與'的JOptionPane 「?」*當然。這和你在'JFrame'中做的事情一樣。如果你無法在框架中實現它,請發佈最佳嘗試的[SSCCE](http://sscce.org/)。 –

+4

'JOptionPane'的消息參數需要一個'Object'。如果你傳遞一個'Component','JOptionPane'將把它用作「主」視圖,在它周圍添加圖標和按鈕 – MadProgrammer

+12

如果你要回答你自己的問題,請發表你的答案作爲答案,並接受你的答案。 (這樣人們不會浪費時間來閱讀你的問題,希望能夠回答它) – Gus

回答

0

我不認爲這是可行的JOption。但我認爲這是JDialog的可能性。

examble:

當你打開,你可以使用命令的JFrame(在這裏你必須寫你的窗口名).enable(假)

的對話框,你可以得到它在關閉按鈕當複選框爲真時,您可能有一個複選框 。它會顯示一個按鈕,當你點擊它可以使按鈕invisble

0

最好的事情是去的JDialog

因爲JOptionPane的是不支持這種多組件。

0

elective.addActionListener聲明我叫錯變量,有cp12代替cp6,張貼了我切下來的代碼下面,一切都很好,謝謝

public void displayAddSomething(ArrayList<String> items) 
    { 
// cut down version only showing the button panels 

    // initialising the variables  
    JPanel buttPanel = new JPanel(new GridLayout(0, 1)); 
    JPanel pointPanel = new JPanel(new GridLayout(0, 1)); 
    JRadioButton core = new JRadioButton("Core Item: ", true); 
    final JRadioButton elective = new JRadioButton("Elective Item: "); 
    final JRadioButton cp6 = new JRadioButton("6 Points: "); 
    JRadioButton cp12 = new JRadioButton("12 Points: ", true); 
    ButtonGroup bg1 = new ButtonGroup(); 
    ButtonGroup bg2 = new ButtonGroup(); 

    // adding the buttons to buttPanel and the button group 1 
    buttPanel.add(new JLabel("Select Course Type")); 
    buttPanel.add(core); 
    buttPanel.add(elective); 
    buttPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2)); 
    bg1.add(core); 
    bg1.add(elective); 

    // add buttons pointPanel and bg2 
    pointPanel.add(new JLabel("Select Credit Points")); 
    pointPanel.add(cp6); 
    pointPanel.add(cp12); 
    pointPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2)); 
    bg2.add(cp6); 
    bg2.add(cp12); 

    cp6.setEnabled(false); 


    // add action listener for each of bg1 buttons so if event 
    // occurs the cp6 button will toggle between enabled and disabled. 

    elective.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      cp6.setEnabled(true); 
     }}); 

    core.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      cp6.setEnabled(false); 
     }}); 

    Object[] message = {buttPanel,pointPanel}; 

    int result = JOptionPane 
     .showOptionDialog(
     this, 
     message, 
     "...some text...", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, 
     null, new String[] { "Submit", "Cancel" }, "Default"); 

    if (result == JOptionPane.OK_OPTION) 
     { 
     // collecting all the input values in a string array to pass to 
      // another class for processing by the model... 
     } 
    else if (result == JOptionPane.NO_OPTION) 
     { 
      JOptionPane.showMessageDialog(this, 
      "You Have Elected Not to do anything At This Time", 
      "YOU HAVE COME THIS FAR AND YOU QUIT NOW....", 
      JOptionPane.QUESTION_MESSAGE);      
     } 
    } 
相關問題