2013-07-08 3 views
0

JScrollpane에 몇 개의 패널을 추가하고 차례로 프레임에 추가하려하지만 스크롤 할 수 없습니다. 다음은 코드입니다.JscrollPane을 사용하는 JFrame

first_panel = new JPanel(); 
first_panel.setBackground(Color.red); 
second_panel = new JPanel(); 
second_panel.setBackground(Color.blue); 
third_panel = new JPanel(); 
third_panel.setBackground(Color.green); 
fourth_panel = new JPanel(); 
fourth_panel.setBackground(Color.red); 
fifith_panel = new JPanel(); 
fifith_panel.setBackground(Color.blue); 
six_panel = new JPanel(); 
six_panel.setBackground(Color.green); 
final_panel = new JPanel(); 
final_panel.setLayout(null); 
final_panel.setBackground(Color.gray); 
final_panel.add(first_panel); 
final_panel.add(second_panel); 
final_panel.add(third_panel); 
final_panel.add(fourth_panel); 
final_panel.add(fifith_panel); 
final_panel.add(six_panel); 

first_panel.setBounds(10,10,200,100); 
second_panel.setBounds(10,10,200,200); 
third_panel.setBounds(10,10,200,300); 
fourth_panel.setBounds(10,10,200,400); 
fifith_panel.setBounds(10,10,200,500); 
six_panel.setBounds(10,10,200,600); 
panel_scroll = new JScrollPane(final_panel); 
panel_scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);  
final_panel.setBounds(0,0,400,400); 
// scroll_panel = new JPanel(); 
// scroll_panel.setLayout(null); 
// scroll_panel.add(panel_scroll); 
// panel_scroll.setBounds(0,0,400,400); 
frame.getContentPane().add(panel_scroll); 

도와 줄 수 있습니까? 미리 감사드립니다.

+5

이 작업을 수행하지 않는 자연 스크롤 JScrollPane.getVerticalScrollBar().setUnitIncrement(int);를 오버라이드 (override) 할 필요가 수동 크기 조정/위치 지정, 대신 적절한 LayoutManager 사용 – kleopatra

+2

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) Java GUI는 다양한 플랫폼과 다양한 화면 해상도 및 다양한 PLAF를 사용해야합니다. 정확한 배치에 도움이되지 않습니다. 강력한 GUI를 위해 구성 요소를 구성하려면 레이아웃 패딩 및 여백과 함께 레이아웃 관리자 또는 그 조합을 사용하십시오. –

+0

GUI의 ASCII 아트가 가장 작은 크기로 표시되고 크기 조정이 가능한 경우 추가 너비/높이로 표시되어야합니다. –

답변

3
  • 사용 표준 LayoutManagers 대신 AbsoluteLayout의 다음 GUI가 연속적으로 또는 비례 모든 JPanels 화면

    에 같은 크기를 가지고 할 수있는 경우에 final_panel에 대한 JFrame

  • 사용 GridLayout()와 크기를 조정한다 스윙

  • JPanel의 경우 getPreferredSize을 우선 입력하고 화면에 PreferredSize을 정확하게 입력하십시오 (final_panel

  • ScrollPanel.setPreferredScrollableViewportSize(new Dimension(int, int));을 재정의 할 필요) JScrollPane보다, 다음 화면

  • 을에 inital하고 정확한 PreferredSize에 대한 JFrame.pack() 전화는

관련 문제