2017-12-31 95 views
0

저는 데스크톱 응용 프로그램 용 사용자 정의 JFrame을 만들었고 응용 프로그램의 맨 위에 JPanel을 추가하여 제목 상자의 하위 기능을 수행했습니다. 문제는 보통 왼쪽 상단 대신 JPanel의 중간에있는 버튼을 추가했을 때입니다. 그리고 다른 위치에 놓아도 움직이지 않을 것입니다. 당신은 프레임에서 BorderLayout를 사용JPanel 버튼이 정확한 위치에 없습니다

 JFrame f = new JFrame("Hello"); 
     f.setResizable(true); 
     JPanel pa = new JPanel(); 
     JButton btn = new JButton("Exit"); 

     btn.setBackground(Color.white); 
     btn.setText("Button"); 
     btn.setSize(300, 80); 
     btn.setLocation(50, 0); 

     pa.setBackground(Color.red); 
     pa.setPreferredSize(new Dimension(width,60)); 
     pa.add(btn); 

     f.setBackground(Color.white); 
     f.setUndecorated(true); 
     f.getContentPane().add(pa, BorderLayout.NORTH); 
     f.setSize(new Dimension(width,height)); 
     f.setLocation(200, 200); 
     f.setVisible(true); 
+1

[패널 사용 방법 - 레이아웃 관리자 설정] (https://docs.oracle.com/javase/tutorial/uiswing/components/panel.html#layout) -> [레이아웃 관리자 사용] (https : //docs.oracle.com/javase/tutorial/uiswing/layout/using.html) –

+1

"보통 왼쪽 상단"은 "예상대로"또는 " "이전에 Swing 장소를 본 곳"? 이전 버전 인 경우 Axel에서 제안한 Swing 문서 ([menu] (https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html) 문서)를 읽어보십시오. 몹시 떠들어 대다). 후자의 경우 의도 한대로 작동하는 구성 요소의 예가 비교 대상이됩니다. – dimo414

답변

1

: 여기에 코드입니다. 패널에서 똑같은 작업을 수행 할 수 있습니다. 일반적으로

pa.setLayout(new BorderLayout()); 
pa.add(btn, BorderLayout.WEST); 

setLocation는 일반적으로 당신이 손으로 모든의 위치를가는 경우가 아니라면 사용하지 않도록, 레이아웃 매니저에 맞서 싸울하는 경향이있다.

+0

그 방법 중 하나입니다,하지만 BorderLayout 방법은 아주 좋은 방법이 아니기 때문에 다른 버튼을 옆에 추가하기를 원합니다. – tester7281

1

BorderLayout 웨이는 그 옆에 다른 버튼을 추가하기 때문에 매우 좋지 않습니다.

다음은 FlowLayout입니다. FlowLayout.LEADING을 정렬로 사용합니다.

하지만 같은 일반적인 팁 : ASCII 아트 또는 간단한 도면을 제공

  1. 최소 크기로 (모든 구성 요소를 나타내는)이 GUI의
    레이아웃 의도 등 폭, 만약 조정 및 height - 여분의 공간을 사용하는 방법을 보여줍니다.
  2. 더 나은 도움을 받으려면 Minimal, Complete, and Verifiable example 또는 Short, Self Contained, Correct Example을 게시하십시오.