选择单选按钮可显示文本

时间:2014-03-23 18:55:17

标签: java swing jradiobutton

使用面板上显示的单选按钮,是否可以选择单选按钮,然后在面板上显示一些文字,说明用户选择了什么?

所以这是一个单选按钮列表

    public void RadioButtons() {
    btLdap = new JRadioButton ("Ldap");
    btLdap.setBounds(60,85,100,20);
    panelHolder.add(btLdap);

    btKerbegos = new JRadioButton ("Kerbegos");
    btKerbegos.setBounds(60,115,100,20);
    panelHolder.add(btKerbegos);

    btSpnego =new JRadioButton("Spnego");
    btSpnego.setBounds(60,145,100,20);
    panelHolder.add(btSpnego);

    btSaml2 = new JRadioButton("Saml2");
    btSaml2.setBounds(60,175,100,20);
    panelHolder.add(btSaml2);
}

用户选择btLdap

btLdap.setSelected(true);

现在,如何使文本显示在面板上而不是消息框

3 个答案:

答案 0 :(得分:0)

以下是如何在ActionListener上使用JRadioButton的一些示例:

public class ListenerExample extends JFrame implements ActionListener {

private JRadioButton check = new JRadioButton("hello");
private JLabel label = new JLabel();

public ListenerExample() {
    check.addActionListener(this);

    add(check);
    add(label);

    setLayout(new FlowLayout());
    setSize(800, 600);
    setVisible(true);
}

public static void main(String[] args) {
    new ListenerExample();
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() instanceof JRadioButton) {
        JRadioButton button = (JRadioButton) e.getSource();
        label.setText(String.valueOf(check.isSelected()));
    }
}

}

答案 1 :(得分:0)

使用匿名内部类,你会有类似的东西:

yourRadioButton.addActionListener( new ActionListener() {
    public void actionPerformed( ActionEvent event ) {

        // here you will write the code that you want to
        // be executed when your radio is clicked
        yourLabel.setText( "Some text..." );


        // if you want to exeute it onlye when it is selected
        // you will need to do this
        if ( yourRadioButton.isSelected() ) {
            // some code here
        }

    }
});

在最近发布的Java 8中,您可以使用lambda表达式来注册您的侦听器。类似的东西:

yourRadioButton.addActionListener( event -> {

    // here you will write the code that you want to
    // be executed when your radio is clicked
    yourLabel.setText( "Some text..." );


    // if you want to exeute it onlye when it is selected
    // you will need to do this
    if ( yourRadioButton.isSelected() ) {
        // some code here
    }

});

答案 2 :(得分:0)

如果要在选择单选按钮时显示文本,可以使用ActionListener

final JTextArea textArea = new JTextArea();
add(textArea);

JRadioButton radioButton = new JRadioButton();
add(radioButton);
radioButton.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        textArea.setText("Selected");
    }
});

JRadioButton radioButton2 = new JRadioButton();
add(radioButton2);
radioButton2.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        textArea.setText("Selected 2");
    }
});

radioButton.setSelected(true);

当选择第一个时,它将使用The first is selected!更改JTextArea的文本,与第二个单选按钮相同但使用The second is selected

正如您所说,radioButton.setSelected(true); setSelected用于选择/取消选择单选按钮。

在这个例子中,我使用了textArea,但你可以使用所有有方法的东西来改变它所包含的文本(图像也是如此)。

官方DOC,here


无论如何,actionPerformed在使用setSelected时没有被调用,所以我会选择类似方法

private void updateText(int index)
{
    String text = null;

    switch (index)
    {
        case 0:
            text = "Selected";
            break;
        case 1:
            text = "Selected 2";
            break;
    }

    textArea.setText(text);
}

然后当您想要选择updateText(0 or 1 etc.)另一个单选按钮并更新文本时,请致电setSelected

如果您想要显示“按下它会发生什么”消息,这一切都很有用,但如果您只想用单选按钮的文本更改区域文本,请使用

textArea.setText(e.getActionCommand());