Java 外部类 JComboBox 缺少选择

标签 java swing class jframe jcombobox

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

当我单独测试我的组合框时,它有效。但是,当我在类中创建它并将其添加到窗口类时,我丢失了添加的 String 数组。有什么想法我哪里出错了吗?

我的主课:

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 工厂。

关于Java 外部类 JComboBox 缺少选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532746/

相关文章:

java - 从构造函数抛出异常 - 子类是否也必须抛出异常?

java - 如何设置 JSplitPane-Divider 的折叠/展开状态?

java - 将 .class 文件添加到 NetBeans 中的项目

c++ - 类定义中的段错误无法找出位置

mysql - 使用PHP脚本备份数据库而不使用Mysqldump,有推荐的CLASS吗?

Java JDBC 无法连接到 MSSQL Server

java - JSP代码的复用

java swing - JLabel不旋转

java - 自定义图 - Java Swing

java - 在 JPanel 中调用 super.paintComponent(g) 后,先前的绘图丢失