2011-11-30 6 views
1

질문이 있습니다.Java 그리드 레이아웃 및 JPanel

다음 프로그램이 있는데 한 가지 문제가 있습니다. 그리드 레이아웃을 만들었고 JPanel을 사용하여 버튼과 텍스트를 그리드에 입력했습니다.하지만 텍스트가 길면 모든 것이 크기가 변경되는 것 같습니다. 누군가가 이런 일이 발생하지 않도록 어떻게 도와 줄 수 있습니까?

내 코드입니다 :

package JFrameTester; 

import java.awt.*; 
import javax.swing.*; 



public class JFrameTester { 


public JPanel createContentPane(){ 

     JPanel panel = new JPanel(); 
     JButton button1,button2,button3,button4; 

     JPanel mainPanel = new JPanel(new GridLayout(2, 0, 40, 10)); 

     //JPanel red = createSquareJPanel(Color.red, 50); 
     button1 = new JButton ("button1"); 
     button2 = new JButton ("button2"); 
     button3 = new JButton ("button3"); 
     button4 = new JButton ("button4"); 
     Label one = new Label("Rohihtjthjhtjghjghmgfjgjghjghj"); 
     //add(button1); 


     mainPanel.add(button1); 
     mainPanel.add(one); 
     mainPanel.add(button2); 
     mainPanel.add(button3); 
     mainPanel.add(button4); 


     panel.add(mainPanel); 
     panel.setOpaque(true); 
     return panel; 
    } 


    public static void main(String[] args) { 

     JFrame frame = new JFrame("GridLayout"); 
     JFrameTester Display = new JFrameTester(); 
     frame.setContentPane(Display.createContentPane()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 


} 
} 

답변

4

관리자가 할 레이아웃 무엇; 그들은 모든 구성 요소에 충분한 공간을 할당합니다. JLabel 인스턴스에 HTML을 포함 시키려고 시도 할 수 있습니다. 그렇지 않으면, 당신은 단지 그것으로 살아야 할 것입니다.

JPanel 인스턴스가 기본적으로 불투명하다는 점에 유의해야합니다.

1

음 ... 처음부터 먼저. GridLayout을 2 행 0 열로 선언하고 있습니다. 이게 네가 원하는거야? 나는 생각하지 않는다.

다음 부분은 콘텐츠를 추가하는 부분입니다. 그리드는 일반적으로 동적 인 크기로 유지됩니다. 가능한 한 작은 값으로 셀을 축소합니다. 그러나 일부 내용이 커지면 (텍스트의 큰 jPanels) 셀을 확장합니다.

셀의 내용에 따라 정적 인 상태이거나 사용 가능한 모든 공간을 채우려 고 시도합니다.

질문을 올바르게 읽는다면 JComponentsSee JavaDoc link here의 기능을 사용하여 JButton의 정적 크기를 설정하십시오. 각 버튼에 setMaximumSize(new Dimension(width,height));을 사용하고 싶을 것입니다.

의미가 있습니까?

메모에. GrabBagLayout을 사용하여 레이아웃을보다 잘 제어하려는 경우 더 많은 일, 그러나 더 많은 통제.

+2

@Led K는 (그에게 슬픔을주는 구성 요소)은'JLabel' 인스턴스에 대한 최대 크기를 설정하면, 그 중 일부는 텍스트가 누락됩니다입니다. – mre

+1

그게'GridBagLayout'일까요? –

+0

여전히 작동하지 않습니다 :) – Led

0

이 게시물은 이전이지만 동일한 문제를 검색하면서이 문제를 발견했습니다. frame.pack()의 ​​사용은 주어진 패널 크기에 맞게 모든 것을 이동시키는 데 사용됩니다. 따라서 한 가지 크기를 늘리면 다른 것들이 축소되어 패널에 맞게 움직입니다.

소스 : http://www.macs.hw.ac.uk/guidebook/?name=JFrame&page=2