有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jframe。在另一个类中,使用getSelectedItem()从ComboBox获取值

我在课堂上有主要的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) 个答案

  1. # 1 楼答案

    这条线

    CreateBuildAndPr createBuildAndPr = new CreateBuildAndPr();
    

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

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

    private JComboBox clientCombo;
    

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

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

    JFrame{}中,将组合框作为变量传递

    CreateNewBuildAndPr callSe = new CreateNewBuildAndPr(comboBoxClients);
    

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

    clientCombo.getSelectedItem()...
    

    我刚才用了一个JComboBox作为例子。如果您传递了整个GUI对象,就可以访问它并使用它的方法,比如getInfo()