我正在开发一个系统,一旦选择了JComboBox
的字段,就会将JButton
的文本从连接更改为脱机,具体取决于{{1}中写入的字段的状态1}}。
这一切都已经完成,但我遇到了问题。
当我运行程序时,系统会自动进入事件JComboBox
,而不是我选择了addActionListener
字段?
有人可以帮我一把吗?
从答案
编辑... Code(下)的块被写入一个在comboBox.addActionListener之前执行的方法。这段代码,它写道,因为我需要在版本上弹出JComboBox的元素......
JComboBox
现在,在其他Java方法中,(它叫做After),你会发现这个代码:
private void actionOfSearch(){
table.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
if(ipAvailable){
blockSetRemoteUnit = false;
timer = new Timer(10000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//extracted_values is a Vector<Stirng>
if(typeOfConnection.equals("ABC") || typeOfConnection.equals("DEF"))
extracted_values = new E_ConnectionABC_DEF(resourceSelected, credential).result;
else{
try {
extracted_values = new E_ConnectionOther(resourceSelected, credential).result;
} catch (InterruptedException e1) { e1.printStackTrace(); }
}
int size = extracted_values.elementAt(0).size();
String stringOfNameLabel = "";
String stringValueOfResource = "";
JLabel nameResource = null;
JProgressBar progressBar = null;
subPanelOfinfoServer.removeAll();
subPanelOfinfoServer.repaint();
subPanelOfinfoServer.revalidate();
if(!blockSetRemoteUnit)
comboBox.addItem(" ");
for(int i=0;i<size;i++){
stringOfNameLabel = extracted_values.elementAt(1).elementAt(i);
//Here I popolate the fields of JComboBox, and how you can see,
//I can Change the fields, every time that I selected a different Row
//of the JTable.
if(!blockSetRemoteUnit && stringOfNameLabel.length()==2 && stringOfNameLabel.contains(":"))
comboBox.addItem(stringOfNameLabel);
nameResource = new JLabel(stringOfNameLabel);
nameResource.setHorizontalAlignment(SwingConstants.CENTER);
stringValueOfResource = extracted_values.elementAt(0).elementAt(i);
progressBar = new JProgressBar();
progressBar.setValue(Integer.parseInt(stringValueOfResource));
subPanelOfinfoServer.add(nameResource);
subPanelOfinfoServer.add(progressBar);
}
blockSetRemoteUnit = true;
}
});
timer.setRepeats(true);
timer.setCoalesce(true);
timer.setInitialDelay(0);
timer.start();
}
else{
logger.warn("[JTABLE-SelectRow]ATTENTION! " + resourceSelected + " is not Available");
JOptionPane.showMessageDialog(null, "IP " + resourceSelected + " is not Available");
}
}});
}
答案 0 :(得分:1)
可能你正在创建你的动作监听器,然后在添加项目之前执行JComboBox,或者在注册动作istener之后以编程方式选择组合框的某些值。 在将所有项添加到JComboBox后创建动作侦听器。
发生这种情况是因为如果组合框没有项目,当您添加项目时,它将成为所选值,从而触发动作侦听器。