2011-11-22 3 views
1

자바에서 사용자 인터페이스를 정렬하기 위해 여러 레이아웃의 JPanel을 사용하여 독립 실행 형 응용 프로그램을 작성하고 있습니다. 이제는 내 문제는 (테두리 레이아웃을 사용하는 다른 패널 안에있는 테두리 레이아웃의 패널에있는) 패널의 위쪽면을 가져올 때 패널을 확장하는 클래스를 추가하려고하면 아이콘을 칠하는 순서입니다. 내 창 상단 (패널에 그림 그리기). 문제는 레이아웃이 아이콘의 일부를 잘라내거나 다른 말로하면 특정 크기로 패널을 최소화한다는 것입니다. 나는 flowlayout 및 다른 사람으로 변경하려고했지만 동일하지 않습니다 ... 컨테이너 (패널 또는 다른 사람)가 주어진 크기보다 작은 크기로 설정할 수 없다는 것을 레이아웃에 알리는 옵션이 있는지 묻고 싶습니다. ? 다른 제안도 모두 도움이되지만, GUI에 미니 변경 아이콘을 추가하려고합니다. 모세자바 레이아웃을 사용하여 컨테이너 최소 크기를 정의하십시오.

이것을 읽고 돕는

감사

+0

을 MinimumSize을 보유 할 수 당신이 문제를 시연, 컨테이너/JPanel/JComponents에 대한 선언없이 setXxxSize를 설정하는 몇 가지 방법이 있습니다 setXxxSize :-) – mKorbel

답변

1

컨테이너 당신의 GUI가 JPanel의 중첩 된 경우 다음 http://sscce.org/를 게시, JComponent의, 간단한 예를 들어

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class CustomComponent extends JFrame { 

    private static final long serialVersionUID = 1L; 

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

    public void display() { 
     add(new CustomComponents());// 
     pack(); 
     // enforces the minimum size of both frame and component 
     setMinimumSize(getSize()); 
     setVisible(true); 
    } 

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

class CustomComponents extends JPanel { 

    private static final long serialVersionUID = 1L; 

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

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

    @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

빠른 응답을 주셔서 대단히 감사합니다. – moshe