将JCombobox值传递给Start按钮

时间:2016-04-04 11:31:52

标签: java combobox

我有一个带有组合框和启动按钮的gui。我想要一个开始按钮来做一个动作取决于组合框选择。这是我的组合框代码:

private void jCbxItemStateChanged(java.awt.event.ItemEvent evt) {                                      
    if (evt.getStateChange() == ItemEvent.SELECTED) {
        Object item = jCbx.getSelectedItem().toString();
        Object item1=new Object();
        Object item2=new Object();
        Object item3=new Object();

        if (item.equals("1"))
        {
          System.out.println("ip 1");
          item=item1;

        }
        if (item.equals("2"))
        {
            System.out.println("ip 2");
            item=item2;

            if (item.equals("3"))
            {
              System.out.println("ip 3");
              item=item3;
            }
        }                                     
    }

我想将保存的组合框选项传递给开始按钮并根据用户选择执行操作:

private void btnSubmitActionPerformed(java.awt.event.ActionEvent evt) {                                          
    if (evt.getActionCommand().equals("Display Ping")) {
        System.out.println("Display ping: ");

        pingmain p= new pingmain();
        String ip = "ping google.com";  
        p.runSystemCommand(ip);

        //I want to read value from combobox and depending if item1 was choosen i would do 
        // new  String ip ="ping ipExample1", if item2 String ip2="ping ipExample2" 
        // Pseudocode: if item 1 do ip example 1, if item 2 do ip example 2
        GUI_COMPLETE = true;

    }
}           

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您正在测试JButton抛出的事件的价值......

处理JButton事件时,只需访问JCombobox并获取所选值。

或者更好的是,如果所有这些都可以通信:在更改JComboBox上的选择期间,更新String属性,然后在按钮单击时测试并处理它。

在JComboBox事件期间:

  

myChoosenValue =" ipExemple" + jcbb.getSelectedItem()。toString();

将myChoosenValue设置为类的私有属性

然后,如果它只是一个字符串,你真的不需要在按钮点击上复制你的if语句。另外,测试你的" myChoosenValue",然后用它来完成这个过程。 但只有当你的两个组件在同一个类上使用时才有可能,否则它开始变得更复杂,所以在点击按钮期间使用以下

String value = getJCBB().getSelectedItem().toString();

然后根据需要处理字符串。 getJCBB()应该是一个允许您访问构造的JComboBox的方法:

public JComboBox getJCBB(){
    if(jcbb == null){
       // Do init here
    }
    return jcbb;
}

但是你需要jcbb作为属性。

如果需要,总数是这样的:

  

类UI {

private Map<String,String> ips; // Keys are jcbb values, values are ip your need
private JComboBox jcbb;

public UI(){
    initIPS(); // fill here your map data, don't forget to instanciate it as HashMap<>
    // Do some layouts putting...
    X.add(getJCBB(), BorderLayour.NORTH); // for example
}

public JComboBox getJCBB(){
    if(jcbb == null){
        jcbb = new JComboBox();
        //Add here data
    }
    return jcbb;
}

// Now here during your process buttin event
String ip = ips.get(getJCBB().getSelectedItem().toString()); // Acess to the ip pointed with the JCBB choice
//Process 
}