我有3个单选按钮和1个按钮。仅当选择了这3个选项中的一个时,按钮才有效。我怎样才能使用if / else?我知道我可以使用ifSelected,但我不知道我应该在以后写什么。我正在使用Swing。
JRadioButton latwy = new JRadioButton("Łatwy");
JRadioButton sredni = new JRadioButton("Średni");
JRadioButton trudny = new JRadioButton("Trudny");
ButtonGroup poziomTrudnosci= new ButtonGroup();
poziomTrudnosci.add(latwy);
poziomTrudnosci.add(sredni);
poziomTrudnosci.add(trudny);
if(latwy.isSelected() || sredni.isSelected() || trudny.isSelected()) {
start.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {..........}
}
}
else
JOptionPane.showMessageDialog(start, "Select some button.", "blablabla", JOptionPane.WARNING_MESSAGE);
我问过这个问题,因为如果选择某个单选按钮,按钮Start应该会动作。否则你应该声明你必须选择按钮。这段代码几乎可以工作,但只是第一次得到声明。下次按钮开始正常工作。
答案 0 :(得分:3)
修改强>
是的,它的工作原理。只需在感兴趣的JRadioButton上添加一个ItemListener,甚至不使用if块:
public void itemStateChanged(ItemEvent e) {
testButton.setEnabled(e.getStateChange() == ItemEvent.SELECTED);
}
修改2
例如:
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class CheckItemListener extends JPanel {
private static final String[] RADIOS = {"Fe", "Fi", "Fo", "Fum"};
private JButton testButton = new JButton("Test");
public CheckItemListener() {
ButtonGroup buttonGroup = new ButtonGroup();
for (String radio : RADIOS) {
JRadioButton rBtn = new JRadioButton(radio);
add(rBtn);
buttonGroup.add(rBtn);
if (radio.equals("Fi")) {
rBtn.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
testButton.setEnabled(e.getStateChange() == ItemEvent.SELECTED);
}
});
}
}
add(testButton);
testButton.setEnabled(false);
}
private static void createAndShowGui() {
CheckItemListener mainPanel = new CheckItemListener();
JFrame frame = new JFrame("CheckItemListener");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}