2016-07-11 2 views
0

사용자가 JComboBox 목록에서 "추가"를 선택하고 표시되지 않을 경우 JTextField을 표시하고 싶습니다. 하지만 사용자가 "추가"를 선택하면 JTextField가 나타나지 않지만 창을 축소하고 다시 확대하면 나타납니다. 그런 다음에 제대로 작동하고 처음으로 나타나지 않습니다. 왜 그렇게 행동하는거야? 이 모든 솔루션?JComboBox가있는 JTextField가 제대로 작동하지 않습니다.

여기 내 코드입니다 : 내가 문자열 비교를 변경 한

getCmbJtocsv_C_8().addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    { 

     input3 = (String)adaptor.getCmbJtocsv_C_8().getSelectedItem(); 
     adaptor.getTxtJtocsv_C_8().setVisible(false); 

     if(input3.equals("extra")){ 
      adaptor.getTxtJtocsv_C_8().setVisible(true); 
     } 
} 

와 난 여전히 같은 결과를 얻고있다.

+0

여기에 문제가 있습니다. input3 == "추가". 당신은 (문자열) 개체를 비교하는 방법을 배울 필요가 – Stultuske

+0

나는 input3.equals ("추가") 너무 시도, 여전히 동일한 결과를 받고. – mariz

+1

가능한 이유는 사용하는 레이아웃 관리자 일 수 있습니다. 전체 코드 또는 실행 가능한 코드가 문제를 명확하게 해결하는 데 도움이 될 수 있습니다. – mfidan

답변

1

기본적으로 스윙 구성 요소의 크기는 (0, 0)입니다. 구성 요소의 크기/위치는 프레임이 압축되거나 표시 될 때 레이아웃 관리자에 의해 결정됩니다.

텍스트 필드를 보이지 않기 때문에 부모 패널의 크기에는 텍스트 필드가 포함되지 않는다고 생각합니다. 프레임의 크기를 조정하면 패널의 크기와 크기가 다시 계산되기 때문에 텍스트 필드가 나타납니다.

이제 텍스트 필드의 크기가 계산되어 필요에 따라 표시 여부를 전환 할 수 있습니다.

이 경우 도움이되지 않는 경우 문제를 나타내는 SSCCE을 게시하십시오. 그것은 문제를 설명하기 위해 콤보 상자와 텍스트 필드 만있는 프레임을 만듭니다. 앞으로 몇 줄의 코드를 기반으로 애플리케이션의 컨텍스트를 추측 할 수 없으므로 모든 질문에 SSCCE가 포함되어야합니다.

+0

네, 그게 바로 문제입니다. 지금 레이아웃을 카드 레이아웃으로 바꿨습니다. 첫 번째 카드는 패널이 비어 있고 두 번째 카드는 텍스트 상자가있을 것입니다. 그에 따라 필요한 카드를 보여 드리겠습니다. 이제 코드는 잘 작동합니다. 덕분에 ... – mariz

+0

@mariz,'레이아웃을 카드 레이아웃으로 변경했습니다 .' - 레이아웃 관리자에게 작업을 맡기는 것이 좋습니다. – camickr

관련 문제