我正在创建的代码涉及一个JRadioButton和一个JComboBox。如果选择了JComboBox,我希望启用JRadioButton;如果没有选择或取消选择,则禁用它。我的问题是,如果我取消选择JRadioButton,JComboBox将不会被禁用。我该怎么做呢?这是我的代码
LouisClub=new JComboBox();
LouisClub.setEnabled(false);
LouisClub.addItem("Writer");
LouisClub.addItem("Photojournalist");
LouisClub.addItem("Cartoonist");
LouisClub.addItem("Layout Artist");
Louis=new JRadioButton("The Louisian");
Louis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LouisClub.setEnabled(true);
}
});发布于 2012-01-21 21:54:02
对于这样的事情,您应该使用JCheckBox而不是JRadioButton,然后您需要在actionPerformed()方法中检查checkBox状态,并基于该启用/禁用comboBox。就像这样
Louis=new JCheckBox();
Louis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LouisClub.setEnabled(((JCheckBox)e.getSource()).isSeleted());
}
}此外,使用ChangeListener而不是ActionListener也可能是好的(不确定)。
Louis.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent ce) {
LouisClub.setEnabled(((JCheckBox)ce.getSource()).isSeleted());
}
});发布于 2012-01-21 22:14:40
您应该使用ItemListener而不是ActionListener。代码如下:
public class Toto extends JPanel {
private JComboBox LouisClub;
private JRadioButton Louis;
/**
* Create the panel.
*/
public Toto() {
LouisClub = new JComboBox();
LouisClub.setEnabled(false);
LouisClub.addItem("Writer");
LouisClub.addItem("Photojournalist");
LouisClub.addItem("Cartoonist");
LouisClub.addItem("Layout Artist");
Louis = new JRadioButton("The Louisian");
Louis.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
boolean ok = e.getStateChange()==ItemEvent.SELECTED;
LouisClub.setEnabled(ok);
}
});
add(Louis);
add(LouisClub);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new Toto());
frame.pack();
frame.setVisible(true);
}
}我还有两点意见:
再见,
Jean-Marc
https://stackoverflow.com/questions/8953450
复制相似问题