2011-09-14 5 views
2

NetBeans를 사용하여 작성한 Java 응용 프로그램이 있습니다. (예, NetBeans에 대해 많은 불만 사항을 읽었습니다.) 창 크기를 조정할 때 특정 크기보다 작은 창 (실제로 높이)이 축소 될 때까지 내용이 창의 크기가 조정됩니다. 그런 다음 창 크기가 조정되지만 내용이 잘 리게됩니다.자바 창 내용의 크기가 조정되지만 최소 크기를 초과하지 않습니다.

모든 구성 요소 위젯을 확인했습니다. 그들은 모두 0 또는 아주 작은 숫자의 최소 크기가 있습니다. 0이 아닌 기본 크기가있는 유일한 것은 부모와 크기가 조정되지 않는 크기이고 크기도 작습니다. 축소 될 때 위젯 중 하나에 부딪치지 않습니다. 필자가 더 이상 수축 할 수없는 지점에서, 패널 하단과 아래쪽 위젯 사이에는 상당한 간격이 있습니다.

크기를 제한하는 방법을 알 수있는 방법이 있습니까? 거기에있을 수있는 다른 속성이 있습니까?

감사합니다.

+1

설명하는 문제를 나타내는 [sscce] (http://sscce.org/)를 제공하십시오. – trashgod

+1

* "NetBeans에 대해 많은 불만 사항을 읽었습니다."* 원하는 IDE를 사용하는 사람들에게 아무런 문제가 없습니다. 그러나 코드에 대한 모호한 설명에 반대하거나 GUI 빌더가 일반적으로 만들어내는 비 대한 쓰레기를 보지 않아도됩니다. 또한, "IDE를 어떻게 만드나요?"라는 질문에 대한 질문이 있다면, 나는 그 질문에서 벗어났다. IDE에 대한 지원을 제공하는 것보다 더 나은 일을했습니다. IDE가 무엇인지 언급 할 필요가있는 질문자조차도 그들이 무엇을하고 있는지 전혀 모른다는 의심이 조금 듭니다. –

+0

그것은 LayoutManager에 있습니다. 크기는 자유지만 디자인 된 것입니다. 원하는대로 행동하는 관리자를 선택하십시오. – kleopatra

답변

1

예와 매우 간단한 해결책은 무시하고 예를 들어 getMinimumSize()

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class CustomComponent extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public CustomComponent() { 
     setTitle("Custom Component Test"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public void display() { 
     add(new CustomComponents(), BorderLayout.NORTH); 
     add(new CustomComponents(), BorderLayout.CENTER); 
     add(new CustomComponents(), BorderLayout.SOUTH); 
     add(new CustomComponents(), BorderLayout.EAST); 
     pack(); 
     // enforces the minimum size of both frame and component 
     setMinimumSize(getMinimumSize()); 
     setPreferredSize(getPreferredSize()); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     CustomComponent main = new CustomComponent(); 
     main.display(); 
    } 
} 

class CustomComponents extends JLabel { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public Dimension getMinimumSize() { 
     return new Dimension(200, 100); 
    } 

    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(300, 200); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     int margin = 10; 
     Dimension dim = getSize(); 
     super.paintComponent(g); 
     g.setColor(Color.red); 
     g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2); 
    } 
} 
+0

어떻게 도움이 될까요? NetBeans가 대화 상자를 생성하기 위해 생성하는 원시 소스를 조사 할 때 항목 중 소수만이 최소 크기로 설정되고 크기는 작습니다 (85x16). 또한 getMinimumSize()를 재정의하기 위해 모든 패널을 서브 클래스해야한다고 말하는 것입니까? setMinimumSize가 작동하지 않는 경우에만 필요하다고 생각합니다. 그게 고장 났니? 감사. –

+0

NetBeans 사용자이므로 기본 Java Desktop Aplication을 사용한 적이 없으며 코드 생성 또는 사용자 정의 메소드 입력 옵션이 있어야합니다. 그러나 질문이 허용되거나 지원되는 경우, 한 시간에 GUI를 만들지 만, 이점은 JComponents에 대한 완전한 제어입니다. http://download.oracle.com/javase/tutorial/uiswing/components/index.html이 모든 것이 있지만, 필요한 코드는 – mKorbel

+0

+ 1에서는 사용자 지정 구성 요소의 크기를 재정의하는 방법을 보여줍니다. 나는'setMinimumSize()'와'setPreferredSize()'를'display()'에 호출하는 이유를 이해하지 못한다. – trashgod

0

우리가 몇 가지 예제 코드를 볼 수 반환? 나는 창문이 아니라 창 안쪽의 콘텐츠가 특정 지점을 넘어서 크기를 조정하지 않는다고 믿습니다.

+0

가끔 추측 하시겠습니까? – kleopatra