在另一个类中获取JComboBox的索引

时间:2018-08-30 17:14:32

标签: java swing jcombobox

我试图在按钮单击时具有不同的事件,这些事件取决于JComboBox的索引。由于实际项目大于示例,因此这两段代码位于不同的类中:

{
  "events": [
    {
      "new_key" : "new_value",
      "cluster_id": "0717-035521-puny598",
      "timestamp": 1535540053785,

      "details": {
        "reason": {
          "code": "INACTIVITY",
          "parameters": {
            "inactivity_duration_min": "15"
          }
        }
      }
    },
    {
      "new_key" : "new_value",
      "cluster_id": "0717-035521-puny598",
      "timestamp": 1535537117300,

      "details": {
        "previous_disk_size": 29454626816,
        "disk_size": 136828809216,
        "free_space": 17151311872,
        "instance_id": "6cea5c332af94d7f85aff23e5d8cea37"
      }
    }
  ]
}

并且:

public class GUI {

    private String[] difficultyStrings = {"Easy", "Middle", "Hard"};

    private JFrame frame = new JFrame();

    private JPanel panel = new JPanel();

    private JButton button = new JButton();

    private JComboBox<String> diffucltyBox = new JComboBox(difficultyStrings);

   public static void main(String[] args) {

        GUI guiObject = new GUI();
        guiObject.setGUI();
    }

    private void setGUI() {

        Problem problemObject = new Problem();

        button.setText("What index is selected?");
        button.addActionListener(e -> {

            problemObject.actions();
        });

        panel.add(button);
        panel.add(diffucltyBox);

        frame.add(panel);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(700, 700));
        frame.setSize(800, 800);
        frame.setTitle("SuperTicTacToe");
        frame.setVisible(true);
    }

    protected int getDifficulty() {

        int difficulty;
        difficulty = diffucltyBox.getSelectedIndex();

        return difficulty;
    }

}

无论您选择什么“问题-类”,始终会打印出“简单”

1 个答案:

答案 0 :(得分:0)

这很有道理。您创建2个GUI实例。一个在您的主要功能中,一个在问题类中。

对于在主函数中实例化的那一个:您使用setVisible显示框架,并让用户在组合框中进行选择。

对于在问题类中实例化的另一个对象,您永远不会在屏幕上显示它,用户永远无法在该实例中选择任何内容。

但是,您获得了该实例中组合框的索引。肯定是零。

您不应在问题类中实例化一个新的实例,而应将所示的实例作为参数传递给问题类,例如,Problem ProblemObject = new Problem(this);

然后在问题构造函数中将其作为参数,而不是创建一个新参数。