확실히 작동합니다,하지만 당신은해야 할 것 : 여기 내가 무슨 생각입니다 그 코드를 주기적으로 호출하십시오. ActionListener를 사용하는 것이 훨씬 더 좋을 것입니다 - 앞으로는 확실히 도움이 될 것입니다. 당신은 첫 번째 JComboBox에에 ActionListener를 첨부해야한다,이를 위해
//This class should be a private class inside the class which holds the JComboBoxes.
private class DisableActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
if (cb.getSelectedItem().equals("Unavailable")) {
jComboBox2.setEnabled(false);
}
}
}
같은
가 작동하려면 ActionListener를 구현하는 클래스를 만들어야합니다 -의 ActionListener는 그 자체로 좋은입니다! 이렇게하려면 JComboBox에서 addActionListener() 메서드를 사용하고 새로 만든 클래스의 인스턴스를 추가합니다. 우리는
구현 ActionListener 인터페이스 클래스를 만들고, 여기에
private class DisableActionListener implements ActionListener
: 이제
는 코드를 해부한다. 이것으로, 우리는 우리 자신의 ActionListener 모델을 만들고 있습니다. 인터페이스를 구현할 때는 인터페이스의 모든 메서드를 재정의해야하므로 인터페이스의 표준 actionPerformed (ActionEvent e) 메서드를 재정의해야합니다. 이 메소드는, 항목을 선택 또는 선택 해제 할 때마다 불려갑니다 (ActionEvent가 dispatch됩니다). 그러므로, 당신은 당신이이 방법 안에서 일어날 일의 논리를 넣어야 만합니다.
JComboBox cb = (JComboBox)e.getSource();
actionPerformed() 메서드를 호출하게하는 모든 ActionEvent에는 추가 데이터가 포함됩니다. 데이터 조각 중 하나가 ActionEvent 소스입니다.이 작업을 수행하게 된 원인은 무엇입니까? 이 경우, 우리는 ActionListener를 JComboBox에 붙 였기 때문에 소스가 JComboBox라는 것을 알기 때문에, 이벤트 인 JComboBox에 ActionEvent의 소스 (Object)를 캐스트 할 수 있습니다. 문자열에 당신은
(jComboBox1.getSelectedItem().equals("Unavailable") == true),
을 썼다
하지만 등호() 메소드를 이미 true를 반환하므로 (=
나머지는 고정 구문 오류와 사용자가 직접 쓴 경우 논리이며, = true) 부분은 불필요한 중복입니다. 귀하의 경우, 당신은 기본적으로 (사실 == 사실).
어쨌든이 도움이 되길 바랍니다.