Vorrei impostare l'opzione modificabile di una casella di testo in base alla selezione di un pulsante di opzione? Come codificare il listener di azioni sul pulsante di scelta?Listener di azioni su un pulsante di opzione
risposta
Prova questa:
JRadioButton myRadioButton = new JRadioButton("");
myRadioButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// Do something here...
}
});
mio Java è un po 'arrugginito, ma questo dovrebbe essere quello che stai cercando.
Ecco il vostro ascoltatore:
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);
}
}
}
E qui è il codice che imposta lo compongono.
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);
Questa è la soluzione che utilizzerei in questo caso.
//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);
}
});
Un'altra risposta a questa domanda. Modifica un piccolo codice dalla risposta di zalpha314.
Si potrebbe sapere quale pulsante di opzione viene selezionato dal testo di questo pulsante e si può anche saperlo tramite Comando di azione. Nel codice demo del pulsante radio dell'oracolo http://docs.oracle.com/javase/tutorial/uiswing/examples/components/RadioButtonDemoProject/src/components/RadioButtonDemo.java, ho imparato a utilizzare il comando azione.
In primo luogo, definire due comando di azione
final static String ON = "on"
final static String OFF = "off"
comando di azione Quindi aggiungere ai pulsanti
JRadioButton enableButton = new JRadioButton("Enable");
enableButton.setActionCommand(ON);
JRadioButton disableButton = new JRadioButton("Disable");
disableButton.setActionCommand(OFF);
Quindi, in actionPerformed, si potrebbe ottenere il comando di azione.
public void actionPerformed(ActionEvent e){
String ac = e.getActionCommand();
if (ac.equals(ON)){
textField.setEditable(true);
}else{
textField.setEditable(false);
}
}
comando Azione forse meglio quando il button.getText()
è una stringa molto lunga.
Vedere le esercitazioni java: http://docs.oracle.com/javase/tutorial/uiswing/components/button.html e http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener. html? – DNA
Questa domanda è tipica di una mancanza di ricerca –
'JCheckbox' sembra più a proposito. – trashgod