2012-08-02 6 views
0

중앙 패널이 있습니다. 이것은 나의 부모 패널입니다. 부모 패널에 3 개의 패널을 추가하고 있습니다.jlabel 구성 요소를 추가 한 후의 Jpanel 크기

패널이 수직으로 쌓입니다. 제목 패널, 중간 패널, 하단 패널과 같습니다. 나는 타이틀 패널에 집중하고 싶다. 텍스트를 사용하여 jlabel을 만들 때. 라벨이 표시되고 패널 테두리가 부모 패널의 전체 너비만큼 늘어납니다. 이는 내가 원하는 것입니다.

private JPanel titlePanel() { 
    String text = "<html><b><big><font color=#5C8C5C>Help Dialog</font></big></b></html>"; 
    JLabel textLabel = new JLabel(text, JLabel.CENTER); 
    JPanel p = new JPanel(); 
    p.setLayout(new BoxLayout(p, BoxLayout.LINE_AXIS)); 
    p.add(textLabel); 
    p.setBorder(BorderFactory.createLineBorder(Color.black)); 
    return p; 
} 

나는 실제로 HTML 텍스트가 아닌 레이블로 아이콘을 사용하고 싶습니다. 코드를 변경하십시오.

private JPanel titlePanel() { 
    Registry appReg = Registry.getRegistry(this); 
    ImageIcon ediLabelIcon = appReg.getImageIcon("ToolLabel.ICON"); 
    JLabel textLabel = new JLabel(ediLabelIcon, JLabel.CENTER); 
    JPanel p = new JPanel(); 
    p.setLayout(new BoxLayout(p, BoxLayout.LINE_AXIS)); 
    p.add(textLabel); 
    p.setBorder(BorderFactory.createLineBorder(Color.black)); 
    return p; 
} 
이제

레이블 쇼

하지만 패널의 테두리가 레이블로 전용으로 폭이 아니라 부모 패널의 폭을 펼쳐.

저는 패널 경계를 부모 패널의 너비와 레이블 너비만큼 확장하려고합니다. 이것은 상위 패널의 코드입니다.

private void createDialog() { 

    Component titlePanel = titlePanel(); 
    Component verbiagePanel = verbiagePanel(); 
    Component closeButtonPanel = closeButton(); 
    setTitle("HELP Dialog"); 
    centerPanel = new JPanel(); 
    centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.PAGE_AXIS)); 
    centerPanel.setPreferredSize(new Dimension(600, 300)); 
    centerPanel.add(titlePanel); 
    centerPanel.add(Box.createRigidArea(new Dimension(0, 10))); 
    centerPanel.add(verbiagePanel); 
    centerPanel.add(Box.createHorizontalGlue()); 
    centerPanel.add(Box.createRigidArea(new Dimension(0, 10))); 
    centerPanel.add(closeButtonPanel); 
    getContentPane().add(centerPanel); 
    this.pack(); 

} 
+0

답변을 수락 할 수있는 방법이 있다는 것을 알지 못했습니다. 저는 사람들에게 도움을주는 상을주는 것 이상을 원합니다. 내가 대답을 받아들이는 방법을 알아낼 수 있는지 알아 보도록하겠습니다. – jkteater

+0

내 관심을 가져 주셔서 감사합니다 !! – jkteater

답변

1

JLabel 텍스트에서 HTML을 사용하면 JLabel에서 원하는 크기를 계산하는 메커니즘이 바뀌 었습니다. 는 이제 상세하게 설명 할 수는 없지만

JLabel textLabel = new JLabel("<html></html>", ediLabelIcon, JLabel.CENTER); 

레이블로 만드는 제목 레이블을 변경하는 경우 부모 패널 폭에 펼쳐집니다.

또는 GridBagLayout과 같은 다른 레이아웃 관리자를 선택할 수도 있습니다. GridBagLayout을 사용하면 모든 구성 요소를 부모 폭까지 늘릴 수 있습니다.

관련 문제