我试图在按钮单击时具有不同的事件,这些事件取决于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;
}
}
无论您选择什么“问题-类”,始终会打印出“简单”
答案 0 :(得分:0)
这很有道理。您创建2个GUI实例。一个在您的主要功能中,一个在问题类中。
对于在主函数中实例化的那一个:您使用setVisible显示框架,并让用户在组合框中进行选择。
对于在问题类中实例化的另一个对象,您永远不会在屏幕上显示它,用户永远无法在该实例中选择任何内容。
但是,您获得了该实例中组合框的索引。肯定是零。
您不应在问题类中实例化一个新的实例,而应将所示的实例作为参数传递给问题类,例如,Problem ProblemObject = new Problem(this);
然后在问题构造函数中将其作为参数,而不是创建一个新参数。