2014-03-13 2 views
0

100 (동적) JLabel 개체를 고려하고 크기를 조정할 수있는 JPanel 안에 표시하고 싶습니다.
현재 격자 가방 레이아웃 (2 열 50 행)을 사용하지만 사용자가 양식의 크기를 조정하고 펼치면 4 열 25 행, 작은 양식 (1 열 및 100 행), 다른 방법으로 전체 패널을 채 웁니다 (공백 없음).
이 작업은 수동으로 수행해야한다는 것을 알고 있습니다. 현재 사용자가 양식의 크기를 조정하면 모든 멤버를 다시 그리기 (다시 칠하기)하지만 그렇게 할 준비가 된 솔루션이 있는지 궁금합니다.
고맙습니다.스윙 동적 (자동) 맞춤 레이아웃

+0

'격자 가방 레이아웃 (2 칼럼 50 행) 그러나, 사용자는 크기를 조절 및 형태를 확장 할 때, I (예를 들어)해야 할 4 열과 25 행, 그리고 작은 양식 (1 열, 100 행)'== 나를 위해 비센스로 제발, (SSCCE 또는 MCVE 또는 MCTRE에 대한 표시 없이이 자연의 질문에 대한) rereread 공식 오라클 튜토리얼 방법 GridBagLayout – mKorbel

답변

2

http://java-sl.com/tip_columns_flow_layout.html 롭 Camick의 WrapLayout에서보세요 여기에 구현된다.

사용 예

enter image description hereenter image description here

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

public class TestWrapLayout { 
    public TestWrapLayout() { 
     ImageIcon icon = new ImageIcon(getClass().getResource("/resources/stackoverflow2.png")); 
     JPanel panel = new JPanel(new WrapLayout()); 
     for (int i = 1; i <= 250; i++) { 
      JLabel iconlabel = new JLabel(icon); 
      iconlabel.setLayout(new BorderLayout()); 
      JLabel textlabel = new JLabel(String.valueOf(i)); 
      textlabel.setHorizontalAlignment(JLabel.CENTER); 
      textlabel.setForeground(Color.WHITE); 
      textlabel.setFont(new Font("impact", Font.PLAIN,20)); 
      iconlabel.add(textlabel); 
      panel.add(iconlabel); 
     } 
     JFrame frame = new JFrame(); 
     frame.add(new JScrollPane(panel)); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(300, 300); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run() { 
       new TestWrapLayout(); 
      } 
     }); 
    } 
} 
+0

을 사용하십시오.이 사람 (레이아웃)에 최소 열 크기를 허용 할 수 있습니까? 또는 열 증가 단계? –

+0

@parsaporahmad 그것은 'FlowLayout'을 기반으로하므로 아마도 그렇지 않을 수도 있습니다. 그러나 다시 한 번, 나는 소스 코드를 실제로 조사하지 않았다. 어쩌면 그는 함께 와서 확실한 답을 줄 것이다 :-) –

1

public void layoutContainer(Container target) 메소드에서 원하는대로 어린이를 배치 할 수 있도록 사용자 정의 LayoutManager를 정의 할 수 있습니다.

비슷한 예는