내 UI의 사용 사례는 jlist의 항목을 두 번 클릭하여 두 개의 jTextField를 채우는 것입니다.
일반적으로 UI는 마우스 또는 키보드를 사용하여 액션을 호출 할 수 있도록 설계되어야합니다. 즉, 두 번 클릭하거나 선택한 항목에서 Enter 키를 사용할 수 있어야합니다.
Action
을 사용하여이 기능을 구현할 수있는 간단한 클래스에 대해 List Action을 확인하십시오.
이제 Action
을 만들 때 TextAction
을 확장 할 수 있습니다. 그런 다음 TextAction
의 getFocustComponent()
메서드를 사용하여 마지막으로 포커스가있는 텍스트 구성 요소를 확인하고 선택한 항목의 텍스트를 해당 텍스트 필드에 추가 할 수 있습니다.
사용자 정의 Action
의 기본 코드는 다음과 같습니다
JList list = (JList)e.getSource();
JTextComponent textField = getFocusedComponent();
textField.setText(list.getSelectedValue().toString());
참고 : 당신은 당신의 창을 두 개 이상의 텍스트 구성 요소를 포함하는 경우 초점은 두 개의 필드 중 하나에 있는지 확인해야합니다. 그런 다음
private JTextField lastFocusedTextField = null;
를 클래스의 생성자에서 사용자가 텍스트 필드를 만들 위치를 청취자 만들 것입니다 :
을
당신이 당신의 클래스 인스턴스 변수를 정의해야 할 것 된 FocusListener 방법을 사용하려면
FocusListener fl = new FocusAdapter()
{
@Override
public void focusGained(FocusEvent e)
{
lastFocusedTextField = (JTextField)e.getSource();
}
};
JTextField textField1 = new JTextField(...);
textField1.addFocusListener(fl);
// same for the other text field
이제 MouseListener
을 JList
에 추가해야합니다. 그래서 당신이 필요로하는
JList list = (JList)e.getSource();
lastFocusedTextField.setText(list.getSelectedValue().toString());
: 다음 mouseClicked(...)
방법은 당신이 뭔가를 할
- 변수 인스턴스
- 의 FocusListener
- 의 MouseListener
이 두 필드에'FocusListener' 추가 :의 MouseListener에서
이는 경우 - 다른 후 추가합니다. 'lastFocusedTextField' 속성을 선언하십시오. 두 필드 중 하나에서 포커스를 얻었 으면'lastFocusedTextField' 속성을 업데이트하여 가리 키도록합니다. 목록에서 작업 할 때'lastFocusedTextField'를 업데이트하십시오. –
@AndrewThompson이 제안에 감사 드리며이 방법을 시도하고 의견을 다시 말합니다. –