Java外部类JComboBox缺少选择

Java外部类JComboBox缺少选择,java,swing,class,jframe,jcombobox,Java,Swing,Class,Jframe,Jcombobox,好的,在重新思考工资计算器的设计之后,我正在尝试将程序模块化为可重用的部分。我首先在一个类中创建一个JComboBox,将其添加到另一个类中创建的JFrame中,然后在主类中调用JFrame 当我单独测试我的组合框时,它工作了。但是,当我在类中创建它并将其添加到window类时,我失去了我添加的字符串数组。你知道我哪里出错了吗 我的主要班级: import javax.swing.*; import java.awt.*; public class WindowTesting {

好的,在重新思考工资计算器的设计之后,我正在尝试将程序模块化为可重用的部分。我首先在一个类中创建一个JComboBox,将其添加到另一个类中创建的JFrame中,然后在主类中调用JFrame

当我单独测试我的组合框时,它工作了。但是,当我在类中创建它并将其添加到window类时,我失去了我添加的字符串数组。你知道我哪里出错了吗

我的主要班级:

import javax.swing.*;
import java.awt.*;


  public class WindowTesting 
  {

         public static void main(String[] args) {

             CreateWindow gui = new CreateWindow();
             gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

             CreateCombo deptBox = new CreateCombo();


         }

  } 
我的窗口课

import javax.swing.*;
import java.awt.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author bsmith624
 */


public class CreateWindow extends JFrame {

        public CreateWindow() {

        JFrame frame1;

        CreateCombo box1 = new CreateCombo();

        frame1 = new JFrame("Department Combo Box");
        frame1.setSize(400,200);
        frame1.add(box1);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.setVisible(true);

     }

}
最后是我的JComboBox类:

import javax.swing.*;
import java.awt.*;




public class CreateCombo extends JComboBox {

    public static String [] deptList = {"Marketing","IT","Accounting","Development","Payroll","Facilities"};


    /**Creates the combo box 
     * with department names
     */
    public CreateCombo () {

        JComboBox combo = new JComboBox (deptList);
        combo.setVisible(true);

    }   


}

您正在
CreateCombo
中创建另一个JComboBox,这不是必需的,因为您的
CreateCombo
是一个
JComboBox

你必须设置模型

public CreateCombo () {
        super(); // this call JComboBox superConstructor is implicit if you don't put it
        this.setModel(new DefaultComboBoxModel(depList));
        this.setVisible(true);
} 
或者可能是一个更好的设计将使这个构造函数

public CreateCombo(Object[] array ){
          super(array);
  }

我对你的设计不是很确定,我想你必须回顾一下,你有一个类CreateCombo,它是一个JComboBox,也许你不想要这个,也许你只想要一个JComboBox工厂。

非常感谢你。我使用了超级(数组)并且它工作了!我创建这个组合框类的想法是,如果我的程序的另一部分需要一个带有部门列表的组合框,我可以创建这个对象并添加它。你不必为此扩展JComboBox。。。您可能想阅读有关工厂模式的信息