2013-07-26 52 views
1

正如我在其他帖子說我在Java中新的,我有一些愚蠢的問題,這裏的交易:的setEnabled(真)時radioButton.isSelected()

我有一個單選按鈕(radioStock)和一個textField(stockField)。我希望stockField默認爲setEnabled(false),沒有問題,每當選中radioStock時,將stockField設置爲true。我寫了這段代碼,但它不起作用。

if (radioStock.isSelected()) { 
    stockField.setEnabled(true); 
}else{ 
    stockField.setEnabled(false); 
} 

回答

0

這應該工作

radioStock.addActionListener(new ActionListener() 
    { 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     if(radioStock == e.getSource()) 
     { 
      stockField.setEnabled(radioStock.isSelected()); 
     } 
     } 
    }); 
+1

爲什麼'如果(radioStock ...)'如果這是一個匿名的內部類,那麼源將是什麼? –

+0

它爲什麼要工作?OP應該注意什麼原則?盲目地在OP上拋出代碼就是爲什麼他們遇到了問題,有時我們需要教導如何去釣魚,只是迫使他們魚;) – MadProgrammer

5

該代碼需要位於附加到JRadioButton的偵聽器中,如ActionListener或ItemListener。你甚至都不需要了,如果塊,因爲所有你需要的是聽者的裏面的一行代碼:

radioStock.addItemListener(new ItemListener() { 

    @Override 
    public void itemStateChanged(ItemEvent itemEvent) { 
     stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED); 
    } 
    }); 

更多關於使用JradioButton將的,請查看教程:button tutorial


編輯我SSCCE

import java.awt.event.*; 
import javax.swing.*; 

public class ItemListenereg { 
    private static void createAndShowGui() { 
     final JRadioButton radioStock = new JRadioButton("Stock", true); 
     final JTextField stockField = new JTextField(10); 
     JPanel panel = new JPanel(); 
     panel.add(radioStock); 
     panel.add(stockField); 

     radioStock.addItemListener(new ItemListener() { 

     @Override 
     public void itemStateChanged(ItemEvent itemEvent) { 
      stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED); 
     } 
     }); 

     JOptionPane.showMessageDialog(null, panel); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 
+0

我粘貼這一點,但仍然沒有工作!我需要改變什麼嗎? –

+3

@Agustín:不要盲目地剪切和粘貼代碼。使用它包含的想法來增強您自己的程序。閱讀我提供了鏈接的教程。想想,然後編碼。然後,如果你仍然陷入困境,那麼創建併發佈一個只顯示JRadioButton和JTextField而不顯示其他內容的小程序,並顯示你的問題,即[sscce](http://sscce.org)。我會在上面發佈一個sscce例子來向你展示我的意思。 –

相關問題