2010-06-19 3 views
3

스윙에서 얼마나 많은 공간 컨트롤이 주위에 있어야하는지에 대한 가이드 라인이 있습니까? 또한이를 달성하는 방법에 대한 질문이 있습니다. 일부 레이아웃 관리자는 컨트롤 사이의 간격을 지원합니다. 어떤 경우에는 EmptyBorder을 사용해야합니다. 테두리가 겹치지 않아 두 개의 컨트롤 사이에 너무 많은 공간이 생길 수 있으므로 고통이 될 수도 있습니다. - 하나를 제외해야 할 수도 있습니다. 국경의 쪽.스윙에서 컨트롤 간격

또 다른 문제는 다음과 같습니다. 뚜렷한 간격이나 테두리를 사용하면 LAF에서는 좋지만 다른 영역에서는 좋지 않을 수 있습니다. 예를 들어, Nimbus는 주변에 여분의 공간이 있으므로 버튼이 함께 비좁은 것처럼 보입니다. 기본 Windows LAF는 공간을 추가하지 않고도 함께 사용할 수 있습니다. 이 입니다. Microsoft, Apple, Gnome 및 기타 all have different guidelines on that topic부터 플랫폼 문제입니다.

그래서 Windows 나 Metal LAF를 수용하기 위해 컨트롤 사이에 여분의 공간을두면 Nimbus와 다른 것들에서 너무 멀리 떨어져 있습니다.

그렇다면 간격과 테두리가 얼마나 유연한 지에 심각한 부작용이있는 UI를 구성하는 방법에 대한 전체적인 문제가 있습니다. 하나의 컨테이너에 모든 내용을 GridBagLayout과 함께 넣는 것은 좋지만, 여전히 UI를 변경해야하는 경우에는 끔찍한 일입니다. 적절한 레이아웃 관리자를 사용하여 여러 개의 JPanel에서 UI를 구성하면 그 반대의 경우도 마찬가지입니다.

짧게 : 컨트롤이 너무 깔끔하게 정리되어 있고 LAF에 적합하도록하려면 어떻게해야합니까? 어쩌면 나는 여기에서 뭔가를 간과 할 것입니다 - 그다지 큰 일이 아닌 Swing의 크기.


1

은 적어도 내게는 문제가 있었다 - 어쩌면 실행 가능한 해결책이 입니다. 그러나 두 컨트롤을 서로 옆에 배치하는 단순한 경우에 그들 주위에 5 픽셀 비움을 원할 것입니다 - 사이, 사이에 단지 10 픽셀이 아니라 단지 5 픽셀입니다. 저는 이것이 글자의 방향에 따라 다른 테두리를 만들지 않고 일반적인 경우에 어떻게 작동 하는지를 볼 수 없습니다. (왼쪽과 오른쪽은 컨트롤이 어디에 있는지 반드시 알 필요는 없지만 항상 테두리가있는 곳이면 분명합니다.)

답변

0

모든 L & F 및 모든 레이아웃의 경우 사용자가 아닌 l & f 및 레이아웃의 목적을 확신 할 수 없습니다.

일반적으로 스윙 응용 프로그램에서 개발자는 레이아웃을 선택하고 사용자는 & f를 선택합니다.

테두리는 테두리를 변경하지 않으며 (컴포지션의 일부 임) 인게임을 변경할 수 있습니다. 따라서 레이아웃, 테두리 및 인세 트 조합을 사용하십시오. Using Invisible Components as Filler를 참조하십시오

이 BoxLayout는 필러RigidArea의 개념을 가지고있다.

SpringLayout에는 제약이 있습니다. How to Use SpringLayout을 참조하십시오.

GroupLayout 사용 간격. How to Use GroupLayout을 읽을 수 있습니다. GroupLayout은 손으로 매우 복잡하지만 netbeans에서는 matisse로 매우 쉽습니다.

+0

국경과 인세 트의 혼란에 대해 유감스럽게 생각합니다. 그렇습니다. 나는 인세 트를 의미했습니다. 얼마나 많은 공간이 적당합니까? 그리고 한 LAF에서 좋게 보이는 간격이 다른 LAF에서 끔찍한 것으로 보이는 문제에 어떻게 대처합니까 (하나는 구성 요소 주변에 공간을 추가하지 않으며 다른 하나는 그렇지 않습니다). 제대로 보이는 LAF의 목적이라면 거의 모두가 진절머리 나는 직업을 보입니다. – Joey

+0

얼마만큼의 공간이 적절한 지 모르겠다. 나는 디자이너가 아니다. l & f에 관해 표준을 선택하고 함께 작업하십시오. 사용자가 다른 것을 선택하면 그것은 사용자 책임입니다. – Istao

+0

\ o/만세 사용자 편의성이 좋지 않아서 사용자를 비난하는 것은이 문제를 다루는 훌륭한 방법과 비슷합니다. 나는 그것에 대해 더 일찍 생각해야했다. – Joey

1

이 문제는 플랫폼에 따라 차이가있는 MigLayout을 사용하여 해결되었습니다. 또한 버튼 크기 및 시퀀스와 같은 다른 플랫폼 종속 기능을 제공합니다.

매우 좋습니다!

+0

슬프게도, 우리가 작업하고있는 프로젝트에서 우리는 외부 의존성없이 가능한 멀리 작업하기를 원합니다. 그러나 MiG Layout은 확실히 멋져 보입니다. Java 7에 포함되기를 좋아합니다. 지금까지 한 모든 창을 변경하지는 않겠지 만, 미래를 염두에 두겠습니다 :-) – Joey

2

이러한 종류의 지침은 플랫폼에 따라 다르며 모양에 따라 달라집니다. &

javax.swing.LayoutStyle 유틸리티 메서드를 사용하면 구성 요소와 포함 패널 사이 또는 두 구성 요소 사이에 어떤 간격을 사용해야하는지 확인할 수 있습니다.

그러나 이것은 상당히 번거 롭습니다.

LayoutManager을 직접 사용하는 것이 좋습니다. MigLayout을 제안한 개발자도 있고 DesignGridLayout을 살펴보면 구성 요소 간격을 개발자가 완전히 알 수 있습니다.

이러한 레이아웃 관리자를 사용하면 절대 치수 나 인세 트를 직접 설정하지 말고 수행해야합니다.

또한 PLAF의 선택은 모니터의 해상도에 따라 달라질 수 있으므로 중요합니다 (선택한 PLAF에서 지원되지 않는 Hi-DPI 화면에서는 추악한 동작이 발생할 수 있습니다).

어떤 PLAF가 해상도 독립적인지 (즉, HiDPI 장치를 다루는 방법을 알고 있음) 열거 할 수는 없지만, 확실히 Substance은 그 중 하나이며, 일반적으로 매우 좋은 PLAF입니다.