문제

사용자 정의 파일 선택 구성 요소를 작성하고 있습니다. 내 UI에서 먼저 사용자가 버튼을 클릭합니다. JFileChooser; 닫히면 선택한 파일의 절대 경로는 JTextField.

문제는 절대 경로가 일반적으로 길어 텍스트 필드가 확대되어 용기를 너무 넓게 만듭니다.

나는 이것을 시도했지만 아무것도하지 않았다. 텍스트 필드는 여전히 너무 넓다.

fileNameTextField.setMaximumSize(new java.awt.Dimension(450, 2147483647));

현재 비어있을 때는 이미 400px 길이입니다. GridBagConstraints 그것에 첨부.

HTML 페이지의 텍스트 필드와 같으며, 크기가 고정되어 있고 입력이 너무 길어지면 확대되지 않습니다.

그래서 최대 크기를 어떻게 설정합니까? JTextField ?

도움이 되었습니까?

해결책

텍스트 필드가있는 레이아웃 관리자에 따라 다를 수 있습니다. 일부 레이아웃 관리자는 확장되고 일부는 그렇지 않습니다. 어떤 경우에는 어떤 경우에는 항상 확장되고 다른 일부는 항상 확장됩니다.

나는 당신이하고 있다고 가정합니다

filedNameTextField = new JTextField(80); // 80 == columns

그렇다면 대부분의 합리적인 레이아웃의 경우 필드가 크기를 변경하지 않아야합니다 (적어도 성장해서는 안됩니다). 종종 레이아웃 관리자는 들어갈 때 심하게 행동합니다 JScrollPane에스.

내 경험상, setMaximumSize 그리고 setPreferredWidth 그리고 기껏해야 불안정합니다. 스윙은 레이아웃 관리자와 함께 자체적으로 결정했으며 그것에 대해 할 수있는 일은 거의 없습니다.

말하면, 나는 당신이 겪고있는 문제가 없었기 때문에 레이아웃 관리자의 신중한 사용이 문제를 해결할 것이라고 믿게됩니다.

다른 팁

텍스트 필드의 컨테이너에서 최대 너비를 설정하여이를 해결했습니다. setMaximumSize.

Davetron의 답변에 따르면, 레이아웃 관리자가 해당 속성을 무시할 수 있기 때문에 이것은 깨지기 쉬운 솔루션입니다. 필자의 경우 컨테이너는 가장 큰 제품이며 첫 번째 테스트에서는 효과가있었습니다.

텍스트 필드에 크기를 설정하지 마십시오. 대신 SetColumns를 통해 또는 열 인수와 함께 생성자를 사용하여 열 크기를 0이 아닌 값으로 설정하십시오.

일어나고있는 것은 열이 0 일 때 jtextcomponent가보고 한 선호 크기가 텍스트를 렌더링하는 데 필요한 전체 공간이라는 것입니다. 열이 0이 아닌 값으로 설정되면 선호하는 크기는 많은 표준 열 너비를 보여주는 데 필요한 크기입니다. (가변 피치 글꼴의 경우 일반적으로 소문자 'M'의 크기에 가깝습니다). 열이 0으로 설정되면 텍스트 필드는 전체 컨테이너를 얻고 늘릴 수있는 한 많은 공간을 요청합니다.

이미 채우기가있는 그리드 백 층에 이미 가지고 있기 때문에 열을 1로 설정하고 다른 구성 요소 또는 다른 적절한 낮은 숫자를 기반으로 채우기를 늘릴 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top