2012-07-03 8 views
5

ラジオボタンの選択に基づいてテキストボックスの編集可能なオプションを設定したいですか?ラジオボタンでアクションリスナーをコーディングする方法は?ラジオボタンのアクションリスナー

+0

javaチュートリアル:http://docs.oracle.com/javase/tutorial/uiswing/components/button.htmlおよびhttp://docs.oracle.com/javase/tutorial/uiswing/events/actionlistenerを参照してください。 html? – DNA

+1

この質問は、研究の不足から典型的です –

+2

'JCheckbox'はもっとaproposのようです。 – trashgod

答えて

2

はこれを試してみてください:

JRadioButton myRadioButton = new JRadioButton(""); 
myRadioButton.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e) { 
     // Do something here... 
    } 
}); 
+0

ボタンのグループ内でどのラジオボタンがアクティブであるかをどのように検出するのかを示すといいでしょう。 – mins

+0

ラジオボタン – Cybermonk

5

私のJavaは少し錆びですが、これはあなたが探しているものでなければなりません。ここで

は、あなたのリスナーです:

private RadioListener implements ActionListener{ 

    private JTextField textField; 

    public RadioListener(JTextField textField){ 
     this.textField = textField; 
    } 

    public void actionPerformed(ActionEvent e){ 
     JRadioButton button = (JRadioButton) e.getSource(); 

     // Set enabled based on button text (you can use whatever text you prefer) 
     if (button.getText().equals("Enable")){ 
      textField.setEditable(true); 
     }else{ 
      textField.setEditable(false); 
     } 
    } 
} 

そして、ここではそれをセットアップするコードです。

JRadioButton enableButton = new JRadioButton("Enable"); 
JRadioButton disableButton = new JRadioButton("Disable"); 

JTextField field = new JTextField(); 

RadioListener listener = new RadioListener(field); 

enableButton.addActionListener(listener); 
disableButton.addActionListener(listener); 
+1

いいえ 'ButtonGroup'のようなItemSelectableコンポーネントには、ActionListenerではなくItemListenerを使用しますか? – trashgod

+0

ああ、そうです。私が言ったように、Javaではさびしい。 – zalpha314

6

これは私がこの場合に使用する解決策です。

//The text field 
    JTextField textField = new JTextField(); 

    //The buttons 
    JRadioButton rdbtnAllowEdit = new JRadioButton(); 
    JRadioButton rdbtnDisallowEdit = new JRadioButton(); 

    //The Group, make sure only one button is selected at a time in the group 
    ButtonGroup editableGroup = new ButtonGroup(); 
    editableGroup.add(rdbtnAllowEdit); 
    editableGroup.add(rdbtnDisallowEdit); 

    //add allow listener 
    rdbtnAllowEdit.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      textField.setEditable(true); 

     } 
    }); 

    //add disallow listener 
    rdbtnDisallowEdit.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      textField.setEditable(false); 

     } 
    }); 
0

この質問に対する別の回答です。 zalpha314の答えからちょっとしたコードを修正してください。

このボタンのテキストで選択されているラジオボタンを知ることができます。また、アクションコマンドで選択することもできます。オラクルのラジオ・ボタンのデモ・コードhttp://docs.oracle.com/javase/tutorial/uiswing/examples/components/RadioButtonDemoProject/src/components/RadioButtonDemo.javaでは、アクション・コマンドの使用方法を学びました。

まず、そうでactionPerformedで、あなたはアクションコマンドを得ることができ、ボタン

JRadioButton enableButton = new JRadioButton("Enable"); 
enableButton.setActionCommand(ON); 
JRadioButton disableButton = new JRadioButton("Disable"); 
disableButton.setActionCommand(OFF); 

にアクションコマンドを追加し

final static String ON = "on" 
final static String OFF = "off" 

2つのアクションコマンドを定義します。

public void actionPerformed(ActionEvent e){ 
    String ac = e.getActionCommand(); 
    if (ac.equals(ON)){ 
     textField.setEditable(true); 
    }else{ 
     textField.setEditable(false); 
    } 
} 

button.getText()が非常に長い文字列の場合は、操作コマンドが優れている可能性があります。

関連する問題