2013-06-22 69 views
0

我正在尝试在LWUIT中创建一个单元转换器,并且我正在使用两个组合框。如何将项目选择固定在组合框中

该应用程序基本上将在一个组合框中选择的单位转换为在其他组合框中选择的单位。

http://www.unit-conversion.info/length.html#data

它的工作原理是这样的在线转换器。

我已经成功,但我面临一个关于组合框的问题。

当我选择一个组合框上的项目,然后选择另一个组合框上的项目时,之前组合框的选择将丢失。

由于我必须多次选择组合框,即使当我想要修复一个单位时也是如此。

我希望我的应用程序能像这个在线单位转换器一样工作,其中一旦进行选择就被固定,直到做出另一个选择。

那么有什么方法可以保留你的选择,直到你还没有手动改变它?

由于我的评分较低,我无法上传任何图片,并且提供的代码没有用,因为它太冗长,大部分工作正常。

我需要帮助,任何信息都会非常有帮助。

  Form b = new Form(); 
      String content = {"contents here for combobox 1"}; 
      String content2 = {"contents here for combobox 2"}; 
      TextArea value1 = new TextArea(); 
      value1.setConstraint(TextArea.DECIMAL) 
     TextArea value2 = new TextArea(); 
      value2.setEditable(false); 
      final ComboBox V2 = new ComboBox(content2); 
      V2.setListCellRenderer(new checkBoxRenderer1()); 

      final ComboBox V1 = new ComboBox(content); 
      V1.setListCellRenderer(new checkBoxRenderer()); 


      V1.addActionListener(new ActionListener() 
      { 
       public void actionPerformed(ActionEvent evt) 
       { 
      int a = V1.getSelectedIndex(); 
       switch(a){ 
        case 0: 
         int v2sel = V2.getSelectedIndex(); 
         switch(v2sel){ 
             case 0 : 
            double d1 ;      
            value2.setText(value1.getText()); 
            break; 
             case 1 : 
             d1 = Double.parseDouble(value1.getText()); 
             d1 = d1 * 0.1; 
            value2.setText(Double.toString(d1)); 
            break; 
             case 2 : 
            d1 = Double.parseDouble(value1.getText()); 
             d1 = d1 * 1.0e-5; 
            value2.setText(Double.toString(d1)); 
            break; 
             // multiple case statements 
            } 
          //multiple case statements 
           } 
          }); 


      b.addComponent(V1); 

       b.addComponent(value1); 


      b.addComponent(V2); 
      b.addComponent(value2); 

      b.addComponent(Bexit); 
        b.show(); 

        // End 
+1

'那么是否有任何方法可以保留您的选择,直到您尚未手动更改?' - 这是默认行为。每个组合框独立工作。问题出在你的代码上。发布你的[SSCCE](http://sscce.org/)来证明问题。 “提供代码是没有用的,因为它太冗长了” - 应始终提供代码(以SSCCE的形式)。在你的情况下,一个框架与两个组合框。我认为,将少于20-30行的代码来展示所描述的问题。通常当你创建一个SSCCE时,你会发现你真正的问题。 – camickr

+0

抱歉没有提供代码,我很懒。 现在我编辑了我的帖子。 – user2497398

+0

'你可以请指导我制作清晰的listmodels,以便保留复选框状态 - 这是默认行为,除非您专门将相同模型添加到两个组合框中。 “任何类型的信息都会有很大的帮助” - 仍然在等待你的SSCCE证明了这个问题。 – camickr

回答

1

您是否将相同的模型实例设置为两个组合框?

模型控制选择,所以这显然不会工作。

+0

我已经在两个组合框中传递了两个合成字符串..... 我为两个框使用默认列表模型...不工作 现在发布代码 – user2497398

+0

为什么使用复选框呈现器?无论如何组合框只有一个选定的项目...你是指复选框状态不被保存?这不是因为它必须存储在模型中,而是使用了字符串。 –

+0

是的确实....只要我点击一个文本框或其他组合框时,复选框状态不会被保留... 复选框渲染器是使用组合框中的复选框.... 可否请您引导我制作保持列表模式,使复选框状态保存..... 请先生,任何形式的信息将是非常有帮助 – user2497398