2013-05-31 16 views
0

我在使用两个组合框来影响一个项目的状态时遇到了一些麻烦。每个组合框的值都在1到99之间,我试图改变每个值,合并它们,然后在jlabel上显示这个值。到目前为止,我只能看到第一个组合框似乎影响公式。我已经简化它到以下,并感谢您的任何帮助:)如何通过更改不同的组合框的值来感染jlabel

私人诠释value1int,value2int;

value1.addItemListener(new ItemListener() 
    { 
     public void itemStateChanged(ItemEvent ex) 
     { 
      if (ex.getStateChange() == ItemEvent.SELECTED) 
      { 
       // assume single selection 
       int value1int = (Integer)ex.getItemSelectable().getSelectedObjects()[0]; 
      } 
     } 
    }); 

    value2.addItemListener(new ItemListener() 
    { 
     public void itemStateChanged(ItemEvent exs) 
     { 
      if (exs.getStateChange() == ItemEvent.SELECTED) 
      { 
       // assume single selection 
       int value2int = (Integer)exs.getItemSelectable().getSelectedObjects()[0]; 
      } 
     } 
    }); 


    overallValue2.setText((Integer.toString(value1int + value2int))); 
    overallValue2.revalidate(); 
+1

你在程序上想。你在一个事件驱动的环境中工作,你需要编码来响应事件... – MadProgrammer

回答

1

你必须做这样的事情:

public class GUI extends JFrame ... 

private int labelVal; 

... 


// combobox events - The same code to both comboboxes must works 

public void itemStateChanged(ItemEvent exs) 
{ 
    if (exs.getStateChange() == ItemEvent.SELECTED) 
    { 
     // assume single selection 
     int aux = (Integer)combobox1.getSelectedItem()+(Integer)combobox2.getSelectedItem(); 
     int labelVal= aux; 
    } 
} 

他们刷新屏幕

+0

这实际上设法工作,但是,我不得不为每个组合框复制每个项目监听器。它的工作非常感谢! – Iron

相关问题