2011-02-25 1 views
1

JPanel에 그릴 JScrollPane과 JPanel이 있습니다. 또한 나는 길이의 parametre 라인을 그립니다 메서드가 있습니다. 줄의 길이가 JScrollPane에있는 JPanel의 크기 (높이 또는 너비)보다 큰 경우 내 JScrollPane을 스크롤해야합니다. 어떻게해야합니까?JScrollPane 사용법

P. jScrollPane.scrollRectToVisible을 시도했지만 작동하지 않습니다.

+2

"작동하지 않는다"고 말하는 대신. 무슨 일이 일어나고 원하는 결과가 무엇인지 설명하십시오. – jzd

+0

JPanel의 맨 끝까지 선을 그립니다 (선이 패널 크기보다 길더라도). 실제로 JScrollPane에 JPanel을 추가하면 JPanel과 JScrollPane을 자동으로 연결하여 JScrollPane을 스크롤 할 수 있습니다. 스크롤 바를 사용하면 선의 전체 길이를 볼 수있는 것처럼 보입니다. – maks

답변

1

다음은

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

public class DrawLine { 

    JFrame j; 
    JPanel p; 
    JScrollPane sp; 

    public DrawLine() { 
     j = new JFrame(); 
     p = new JPanel() { 
      public void paintComponent(Graphics g) { 
       g.drawLine(20, 20, 250, 250); 
      } 
     }; 
     p.setPreferredSize(new Dimension(300, 300)); 
     sp = new JScrollPane(p); 
     j.getContentPane().add(sp); 
     j.setSize(300, 300); 
     j.setVisible(true); 
    } 

    public static void main(String[] args) { 
      new DrawLine(); 
     } 
} 

주 패널의 추천 사이즈를 설정하는 라인 p.setPreferredSize(new Dimension(300, 300));을 원하는 구현하는 예입니다.

+0

이 예제에서는 구성 요소를 제대로 다시 칠하지 못하고 'JScrollPane' 만 사용하는 방법을 보여줄 수 있습니다. 그러나 말한대로 _ "또한 줄 길이의 매개 변수가있는 줄을 그리는 메서드가 있습니다."_ 문제가되지는 않을 것입니다. – Alpine

+0

사실 나는 버튼을 누르면 스크롤을 원합니다. 나는이 평안을 붙인다.setPreferredSize (새로운 Dimension (weidth, height))를 내 그리기 함수에 삽입 할 수 있지만이 행을 무시하기 때문에 첫 번째 게시물에서 언급 한 선이 그려집니다. – maks

+0

@maks 그리기 기능을 게시 할 수 있습니까? – Alpine

0

스크롤중인 JPanel에 JScrollPanel을 연결해야합니다. 즉, 자동으로 linePanel의 크기가 어떤 이상 스크롤 자체 크기 JScrollPane의 생성됩니다

JScrollPane lineScrollPane = new JScrollPane(linePanel); 

이 필요합니다.

줄을 포함하는 패널이 실제로 전체 줄에 딱 맞는지 확인하는 것이 중요합니다. 즉,

linePanel.setSize(myLine.getWidth(), myLine.getHeight()); 

또는 관련 줄 크기가 무엇이든간에 사용할 수 있습니다. 스크롤 패널하지만 내부가 아닌 것은 크기를 조정합니다

lineScrollPanel.setSize(new Dimension(600, 400)); 

같은 무언가를 주 - 즉, 그것은 600x400 스크롤 창되지만 내부 패널의 작은 더 큰 수 있으며,이 스크롤됩니다.

+0

실제로 Netbeans에 JPanel을 추가하면됩니다. 문제는 linePanel.setSize (myLine.getWidth(), myLine.getHeight());를 수행 할 때 발생합니다. 내 코드에서 : 그것은 패널에있는 모든 선을 지우고 스크롤바는 나타나지 않는다. – maks

+0

질문에서 어떤 코드없이 잘못하고있는 것을 알기가 다소 어렵다. – donnyton

1

당신은 LinePanel 클래스에서 다음과 같은 방법을 정의해야

public Dimension getPreferredSize() { 
    return new Dimension(myLine.getWidth(), myLine.getHeight()); 
    } 

myLine 목적은 위의 방법을 사용할 수 있는지 확인합니다. 그리고 필요에 따라 스크롤바를 가져옵니다.

P .: 나는 LinePanelJPanel을 확장한다고 가정하고 그 선을 그린 패널입니다.

+0

getPreferredSize() 메서드를 재정의하여 기본 크기에 대한 동적 값을 반환하는 방법이 setPreferredSize() 메서드를 사용하는 것보다 우선적 인 방법입니다. – camickr