2013-05-12 7 views
2

Java 프레임에 구성 요소를 추가하는 것과 관련된 질문이 있습니다.JFrame에 JScrollPane 추가

두 개의 버튼이있는 JPanel과 JTable이 추가 된 JScrollPane이 있습니다. 이 두 가지를 JFrame에 추가하려고합니다.

JPanel을 JFrame에 추가하거나 JScrollPane을 JFrame에 추가하여 올바르게 표시 할 수 있습니다. 둘 다 JFrame에 추가하고 둘 다 표시하는 데 문제가 있습니다.

JFrames와 관련된 무언가가 있습니까? 어떤 도움을 주시면 감사하겠습니다.

편집

문제는 레이아웃 (적어도 나는 그것이라고 생각하지 않습니다)에없는이 문제는 스크로 르페 제대로 표시되지 않는 것입니다. 여기에 내가 무엇을 의미하는지 보여주는 이미지입니다 :

GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.gridwidth = GridBagConstraints.REMAINDER; 
    guiPanel.add(scrollPane, gbc); 
    guiPanel.add(buttons, gbc);   

    guiFrame.add(guiPanel, BorderLayout.CENTER); 
    guiFrame.setVisible(true); 
+1

1) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 2) 클래스에 대한 일반적인 [Java 명명 규칙 (Java 命名 規則)] (http://java.sun.com/docs/books/books/books/jls/second_edition/html/names.doc.html#73307) (특히 이름에 사용 된 사례)을 배우십시오. , 메소드 및 속성 이름을 일관되게 사용하십시오. 3) 최상위 컨테이너의 크기를 설정하지 마십시오. 대신 내용을 배치하고'pack()'을 호출하십시오. 4) 프레임 위치 지정을 위해서는'setLocationByPlatform (true)'로 갈 수 없습니다. 데모는 [이 답변] (http://stackoverflow.com/a/7143398/418556)을 참조하십시오. .. –

+1

.. 5) [여러 JFrames, 좋은/나쁜 연습의 사용?] (http://stackoverflow.com/a/9554657/418556)을 참조하십시오. –

답변

2

기본적으로 JFrame의가가 BorderLayout이있다 : 여기

http://canning.co.nz/Java/ScrollPane.png

는 코드입니다. BorderLayout에는 5 개의 플래그가 있습니다. 플래그를 지정하지 않으면 센터 플래그가있는 프레임에 구성 요소가 추가됩니다. Center 플래그는 구성 요소에 다른 플래그가 지정되지 않은 경우 가운데 플래그로 추가되는 구성 요소에 모든 공간을 제공합니다. 링크를 더 보더 레이아웃에 대한 정보, 방문 : http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

당신은 다음 문을 사용하여 모두를 추가 할 수 있습니다

JFrame frame = new JFrame(); 

frame.add(new JPanel(), BorderLayout.NORTH); 

frame.add(new JScrollpane(), BorderLayout.CENTER); 
1

GridBagLayout에이 상황에 대한 좋지 않다. 적은 코드로 원하는 코드를 얻을 수 있습니다.

JPanel pnlButton = new JPanel(new FlowLayout(FlowLayout.CENTER)); 
pnlButton.add(button1); 
pnlButton.add(button2); 

JFrame frame = new JFrame(); 
frame.add(scrollPane, BorderLayout.CENTER); 
frame.add(pnlButton, BorderLayout.PAGE_END); 

Gridbaglayout으로 가고 싶은 경우. 그럼 당신은 그

GridBagConstraints gbc = new GridBagConstraints(); 
gbc.gridwidth = GridBagConstraints.REMAINDER; 
gbc.weightx=1.0; 
gbc.weighy=1.0; 
gbc.fill = GridBagConstraints.BOTH; 
guiPanel.add(scrollPane, gbc); 
gbc.gridwidth = 1; 
gbc.fill = GridBagConstraints.NONE 
guiPanel.add(buttons, gbc);   
guiFrame.add(guiPanel, BorderLayout.CENTER); 
guiFrame.setVisible(true); 

같은 중량 (X), 무게, gridwidth 및 기타 속성을 설정해야합니다 시도하고 그것이 작동하지 않는 경우, 내가 GridBagLayout에 함께 전체 코드를 보낼 것입니다, 알려 주시기 바랍니다.