使用面板上显示的单选按钮,是否可以选择单选按钮,然后在面板上显示一些文字,说明用户选择了什么?
所以这是一个单选按钮列表
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);
现在,如何使文本显示在面板上而不是消息框
答案 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());