2013-06-09 14 views
0

다른 클래스에서 빌드 된 JPanel의 치수 (크기 또는 크기에 관계없이)를 어떻게 얻을 수 있습니까? 내가 GUI를 구축 클래스 자바의 다른 클래스에서 JPanel 객체의 크기 가져 오기

은이 같은 새로운 패널을 instanziate :

PlotPanel specificPlot = gui.BuildPlottingData.makeImagePlot(discDbSpecific, sections, 
windowLength, 1, algoParam1, algoParam2, leadWindowSize, 0, errorAcc); 

이 패널은 보통 인 JPanel처럼 행동하는 것입니다 볼 수 있듯이 :

public class PlotPanel extends JPanel {... 

내가 설정 preferredSize가 올바르게 (올바르게 시각화되고있다) specificPlot.getPreferredSize()를 호출

은 'java.awt.Dimension의 [폭 = 10, 높이 = 10]'분명히 잘못된 그게 전부를 제공합니다 .. Btw는

: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4915023

: 당신은 어떻게 버그를 처리하는 어떤 생각을 가지고 있습니까

때때로 BoxLayout이 패널을 잘라냅니다. 크기에 액세스 할 필요가있는 이유는 ... 지금까지 모든 것을 시도했습니다 ... 또는 세로 형 BoxLayout과 같은 리 스튜디오와 함께 대체 LayoutManager를 알고 있습니까? 수동으로 크기를 읽는가? 같은 문제에

이전 포스트 reffer는 .. 편집 : 나는 getPreferredSize -method 우선합니다. 문제는 내가

package getdata; 

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 

import javax.swing.JPanel; 

public class Test extends JPanel{ 

@Override 
public Dimension getPreferredSize(){ 
    return new Dimension(10,20); 

} 
@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    setBackground(Color.white); 
    Graphics2D paint = (Graphics2D) g; 

    paint.drawString("test", 0, 10); 
    int strWdt = paint.getFontMetrics().stringWidth("test"); 
} 

가}

방법 strWdt을 읽고 다음과 같이 크기에 영향을 미치는 느릅 나무 모든 매개 변수에 액세스 할 수 해달라고입니까? 심지어 클래스에 instanziate 경우 초기 값을 갖습니다.

답변

2

는이 버그 처리하는 방법에 어떤 아이디어가 있습니까 : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4915023

대답은 평가에서 설명을하고, 나머지 질문 - (Should I avoid the use of set[Preferred|Maximum|Minimum]Size methods in Java Swing?)

다른 클래스에서 빌드 된 JPanel의 치수 (원하는 크기 또는 크기와 상관없이)를 어떻게 얻을 수 있습니까?

  • JFrame(JDialog, etc.).pack()이 JPanel의
  • 에 대한
  • 오버라이드로 getPreferredSize라고
  • 후 화면에 표시되어있는 경우 (모든 JComponent의 유효)

    1. JPanel을 반환 자신의 치수를
    2. JPanel에는 API에서 구현 된 FlowLayout이 있습니다.
    3. BoxLayout에서는 내가`로 getPreferredSize를 오버라이드 (override) 할 때 ..
    +0

    가 다른 클래스에서 .. 그 단지 인 JPanel을 SSCCE 누락 지금까지 미안 주셔서 감사합니다 최소, 최대 및 기본 크기 (LayoutManagers의 나머지 부분과 비교에) 접수() '나는 정확한 크기를 얻는다. 문제는이 메서드에서 패널의 높이에 영향을주는 모든 매개 변수에 액세스 할 수 없다는 것입니다. (겹쳐진 'paintComponent()'- 메서드에서 설정하는 중 ... –

    +0

    이러한 메서드를 오버로드하여 전용 void, 생성자를 만듭니다. – mKorbel

    관련 문제