2015-12-11 1 views
0

Я хотел бы создать radioButton, у которого есть два прослушивателя, один на переключателе, а другой на этикетке. сначала нужно делать как обычные задания переключателя для своего состояния выбора, а второе - выполнять свои собственные действия. Проблема с моим компонентом заключается в том, что нарисуйте ярлык на кнопке, см. Прилагаемый рисунок ниже. Любая помощь или лучшая идея будет оценена по достоинству.Как добавить actionlistener в ярлык JRadioButton?

private class RadioLabelButton extends JRadioButton{ 
    private JLabel label; 
    protected boolean lblStatus; 

    private RadioLabelButton(JLabel label,Font font,Color color) { 
     lblStatus = false; 
     this.label = label; 
     label.setFont(font); 
     label.setForeground(color); 
     add(label, BorderLayout.WEST); 
    } 
} 

enter image description here

+4

Вы добавляете JLabel в JRadioButton, что вы ожидали? – Berger

+5

Не расширяйте JRadioButton! Вместо этого используйте композицию! Возьмите RadioLabelButton, который представляет собой панель, содержащую радиообъект и ярлык. –

+2

Есть ли причина, по которой вы решили не устанавливать текст JRadioButton, используя свой [метод setText] (http://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractButton.html#setText-java. lang.String-)? – VGR

ответ

3

Как Oliver Watkins предложил, вы должны создать свой собственный компонент, содержащий JRadioButton, и JLabel.

Вот пример, который предоставляет вам основной метод для тестирования и геттер методы, чтобы получить метку и кнопки, так что вы можете сделать что-то с ними, как добавление слушателей действий.

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 

public class JRadioLabelButton extends JPanel { 

    private final JRadioButton radioButton; 
    private final JLabel label; 

    public JRadioLabelButton(final String text) { 

     radioButton = new JRadioButton(); 
     label = new JLabel(text); 

     add(radioButton); 
     add(label); 
    } 

    public static void main(final String[] args) { 

     JFrame fr = new JFrame(); 
     JRadioLabelButton myRadioLabelButton = new JRadioLabelButton("some text"); 

     JLabel label = myRadioLabelButton.getLabel(); 
     // do things with the label 
     JRadioButton radioButton = myRadioLabelButton.getRadioButton(); 
     // do things with the radio button 

     fr.getContentPane().add(myRadioLabelButton); 
     fr.pack(); 
     fr.setVisible(true); 
    } 

    public JRadioButton getRadioButton() { 
     return radioButton; 
    } 

    public JLabel getLabel() { 
     return label; 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^