JFrame中。使用getSelectedItem()从另一个类中的ComboBox获取值

时间:2015-07-22 08:39:26

标签: java swing jcombobox

我在课堂上有主要的jframe代码:

@SuppressWarnings("serial")
public class CreateBuildAndPr extends JFrame  {

....some code...

    private JComboBox comboBoxClients = new JComboBox();
    private JComboBox comboBoxBranch = new JComboBox();

    ....some code...

        public String getClient(){
            String getClient = comboBoxClients.getSelectedItem().toString();
            //System.out.printf("\nClient: \n" + getClient);
            return getClient;
        }

        /**
         * Create the frame.
         */
        public CreateBuildAndPr() {
            lblCreateBuildAnd.setFont(new Font("Tahoma", Font.BOLD, 11));
            comboBoxBranch.setModel(new DefaultComboBoxModel(new String[] {"1a", "2a", "3a", "4a"}));
            comboBoxClients.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3"}));
            textFieldInfo.setColumns(10);
            btnCreateBuild.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {

                    CreateNewBuildAndPr callSe = new CreateNewBuildAndPr();
                    callSe.newBuild();
                }
            });

            initGUI();
        }

因此,当我在CreateBuildAndPr类中调用此方法getClient()时,ComboBox中的选定值是正确的。让我们说:" 2"。 但是当我从其他班级打电话时,总是返回结果是" 1"。 这是另一个类:

public class CreateNewBuildAndPr extends ConnectionsUrlAndDb {

    @Test
    public void newBuild() {


    CreateBuildAndPr createBuildAndPr = new CreateBuildAndPr();



        System.out.printf("\n\nSelenium: " +createBuildAndPr.getClient());
        String info = createBuildAndPr.getInfo();
        System.out.printf("\n\nSelenium: " +info);
        String branch = createBuildAndPr.getBranch();
        System.out.printf("\n\nSelenium: " +branch);

... more code .... }

如何在其他类中更正getSelectedItem?

1 个答案:

答案 0 :(得分:0)

这一行

CreateBuildAndPr createBuildAndPr = new CreateBuildAndPr();

创建该类的新对象。你想要的是引用现有的JComboBox及其选定的值。解决方案是将组合框(或甚至对包含它的框架的引用)作为参数传递给CreateNewBuildAndPr对象。

例如,修改您的CreateNewBuildAndPr类以包含变量

private JComboBox clientCombo;

并在该类中定义一个新的构造函数

public CreateNewBuildAndPr (JComboBox clientCombo)
{
    this.clientCombo = clientCombo
}

并在JFrame ActionListener中将组合框作为变量传递

CreateNewBuildAndPr callSe = new CreateNewBuildAndPr(comboBoxClients);

允许您在CreateNewBuildAndPr类中引用此组合框。

clientCombo.getSelectedItem()...

我在这里以单JComboBox为例。如果您传递了整个GUI对象,则可以访问它并使用其方法,例如您似乎在那里的getInfo()