JLabel을 확장하는 사용자 정의 클래스가 있습니다. 해당 클래스의 특정 인스턴스에 대해 왼쪽에 텍스트 간격을 추가하고 싶습니다. 이 JLabel의 배경을 설정할 때 간격이 필요합니다. 텍스트가 색상이있는 배경 가장자리 바로 옆에서 튀어 나오게하고 싶지 않습니다. 나는 주위에 꽤 낚시질하고 (페인트 함수 내에서)이 구현 :setBorder JLabel에서 페인트 문제가 발생합니다.
이는 내가 원하는 간격을 추가하는에 작업 표시if (condition) {
bgColor = Color.red;
setBackground(bgColor);
setOpaque(true);
// This line merely adds some padding on the left
setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
}
else {
setOpaque(false);
}
은, 그러나한다는 점에서 불행한 부작용이는 휴식을 표시했다 나머지 모든 응용 프로그램을 다시 칠해 보면 ... 해당 특정 구성 요소 만 다시 칠해지고 나머지는 응용 프로그램이 아닌 것처럼 보입니다. 결국 setBorder 호출에 이르기까지 추적했습니다 ... 모든 종류의 테두리를 설정하면 동일한 깨진 동작이 발생합니다. 우리는 두 가지 버전의 응용 프로그램을 가지고 있습니다. 하나는 Java 1.5에서 실행되고 다른 하나는 Java 1.6에서 실행되는 응용 프로그램입니다. Java 1.6 버전은 Java 1.5 버전이 올바르게 작동하지 않는 것처럼 보입니다. 이전 버전을 Java 1.6으로 업그레이드 할 수는 없습니다 ... Java 1.5에서 작동하는 것이 필요합니다.
setHorizontalTextPosition(JLabel.CENTER);
을 그리고 그 또한 정확하게 같은 방법으로 재 도장을 깰 나타납니다 또한, 나는 (그냥 모습을 확인하려면 다음을 참조하십시오)이 시도. 우리 응용 프로그램의 소스를 살펴 보았지만 테두리를 설정 한 다른 영역 (빈 경계선 포함)을 발견했지만 JLabel (패널, 단추 등)에서는 찾을 수 없었습니다. 누구도 전에 이런 걸 본 사람 있어요? 그것을 고치는 방법을 아십니까? 또는 내가 버그를 해결할 수있는 간격을 얻기위한 또 다른 방법이 있을까요? 감사.
이 코드를 어디에서 불러들입니까? 그것이 생성자에 있다면, 상황은 괜찮을 것이다 ... paintComponent() 또는 그와 비슷한 것이면, 당신이 묘사하고있는 종류의 문제에 부딪 힐 수도있다. –