2013-09-21 3 views
0

저는 두 개의 캔버스 요소를 넣으려고하므로 화면의 각 절반이 차지하고 있습니다. 하지만 FlowLayout을 사용하면 두 캔버스가 서로 중심에 배치됩니다. 나는 다음 그림과 같이 싶어 enter image description here레이아웃을 사용하여 캔버스 놓기

:

나는 다음과 같은 결과가 enter image description here

내 코드 : 그냥이에 대한

public class SigForApplication extends Frame{ 

public SigForApplication(String title) { 
    commonInit(title); 
    sigInit(); 
} 

public static void main(String[] args) { 
    SigForApplication a = new SigForApplication("SigFor"); 

} 

private void commonInit(String title) { 
    this.setTitle(title); 
    this.setLayout(new FlowLayout()); 
    this.setSize(800, 400); 
    this.setVisible(true); 
    this.addWindowListener(
      new WindowAdapter() { 
     @Override 
     public void windowClosing(WindowEvent e) { 
      dispose(); 
      System.exit(0); 
     } 
    }); 
} 

private void sigInit() { 

    SignatureCanvasInput sigCanvasIn = new SignatureCanvasInput(); 
    sigCanvasIn.setSize(new Dimension(400, 200)); 
    this.add(sigCanvasIn); 

    SignatureCanvasInput sigCanvasOutput = new SignatureCanvasInput(); 
    sigCanvasOutput.setMaximumSize(new Dimension(400, 200)); 
    this.add(sigCanvasOutput); 

} 
} 
+1

왜 Swing이 아닌 AWT인가? AWT 구성 요소를 사용하여 포기해야하는 여러 가지 이유 때문에 [AWT를 통한 스윙 엑스트라] (http://stackoverflow.com/a/6255978/418556)에서이 대답을 참조하십시오. 이전 AWT 기반 API를 지원해야하는 경우 [중량 및 중량 구성 요소 혼합] (http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html)을 참조하십시오. –

+0

고마워요! – nanotexnik

답변

2

사용하십시오 GridLayout, 단일 행의 두 구성 요소. 그리드 레이아웃의 구성 요소에는 동일한 크기가 할당됩니다.

자습서의 Laying Out Components Within a Container 레슨을 참조하고, Camickr이 제안한대로 특히 Visual Guide to Layout Managers을 참조하십시오.

+2

+1 스윙으로 전환하는 방법에 대해 생각해 볼 것입니다. (몇 초 만에 상상해보십시오) [레이아웃 관리자] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual)의 스윙 튜토리얼을 참조하십시오. .html). (OP가 API 사용법을 알아야하기 때문에 API에 링크하는 것보다 유용한 튜토리얼에 링크되어 있습니다.) – camickr

+0

@camickr 좋은 점은, JDocs를 항상 열어두고 클래스 이름에 대한 링크를 잡는 데 몇 밀리 초가 더 빠르다는 것입니다. 나쁜 습관.. ;) –