我在Swing GUI中有一个小形式,一旦对象发生变化,我想给我的类调用一些自定义变换器,但我无法弄清楚如何获取该信息并调用我的mutators。这是相关的代码,我知道这相对简单,但我无法弄明白。
对于参考名称框的内容,当更改或丢失时,焦点应调用.setName(String x) 当更改或丢失焦点时,genderbox的内容应调用.setGender(Boolean x) 当更改或丢失焦点时,racebox的内容应调用.setRace(int a),其中a是用于构建表单的数组的索引号 classbox的功能与Racebox相同
更新:发现我需要的一些东西,我需要一个标签的项目,然后使用getsource和getActioCommand但虽然这应该适用于大多数方面我仍然有一个小问题,Genderbox存储一个字符串,但我希望它有一个int值,只显示一个字符串是否有一种方法用aj组合框分别设置一个值和一个显示选项文本? JTextField namebox = new JTextField(nala.getName());
namebox.addFocusListener(new FocusListener() {
//Create the combo box for gender.
String[] gender = { "male", "female" };
JComboBox genderBox = new JComboBox(gender);
if (nala.getGender()){genderBox.setSelectedIndex(1);}else{genderBox.setSelectedIndex(0);}
genderBox.addActionListener(this);
genderBox.setActionCommand("GenderBox");
//Create the combo box for race.
String[] cRace = new String[75];
for (int i=0; i<75; i++){cRace[i] = nala.getRaceName(i);}
JComboBox raceBox = new JComboBox(cRace);
raceBox.setSelectedIndex((int)nala.getRace());
raceBox.addActionListener(this);
//Create the combo box for class.
String[] cClass = new String[50];
for (int i=0; i<50; i++){cClass[i] = nala.getClassName(i);}
JComboBox classBox = new JComboBox(cClass);
classBox.setSelectedIndex((int)nala.getRace());
classBox.addActionListener(this);
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("GenderBox")){
JComboBox cb = (JComboBox)e.getSource();
System.out.println(cb.getSelectedItem().toString());
}
JLabel label = new JLabel(setStatsInfo());
}//actionPerformed(ActionEvent e)
答案 0 :(得分:2)
当JComboBox中存在选择更改时,请使用ItemListener。
示例:强>
JComboBox combo = new JComboBox();
combo.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
// TODO: Action.
}
});
您的代码仅显示添加了listeners
,它确实为您的问题提供了线索。请发布ActionEvent
方法代码以向我们展示问题。