2013-10-02 2 views
2

다양한 탭 수가있는 JTabbed 창이 있습니다. 탭 수가 4보다 크면 각 탭 패널의 아래쪽에 여분의 간격/패딩이 생깁니다. 아래 그림은 이것을 보여줍니다 (왼쪽에는 여분의 간격이 보이고 오른쪽에는 여분의 간격이 없습니다). 나는 많은 다른 레이아웃 매니저 등 다양한 일을 시도했습니다JTabbedPane 왜 여러 개의 탭이있을 때만 여분의 패딩이 있습니까? (코드 및 그림)

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 

import javax.swing.JDialog; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTabbedPane; 

public class DialogTest { 

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

    public DialogTest() { 
     JDialog dialog = new MyDialog(); 
     dialog.pack(); 
     dialog.setVisible(true); 
    } 

    class MyDialog extends JDialog { 

     public MyDialog() { 
      super(null, ModalityType.APPLICATION_MODAL); 

      final JTabbedPane tabs = new JTabbedPane(); 
      final int numTabs = Integer.parseInt(JOptionPane.showInputDialog("Number of tabs:")); 

      setPreferredSize(new Dimension(400, 200)); 

      for (int i = 1; i <= numTabs; i++) { 
       tabs.addTab("Tab"+i, new MyPanel(i)); 
      } 

      setLayout(new BorderLayout()); 
      add(tabs, BorderLayout.NORTH); 
     } 
    } 

    class MyPanel extends JPanel { 
     public MyPanel(int text) { 
      final JLabel label = new JLabel("THIS IS A PANEL" + text); 
      label.setFont(label.getFont().deriveFont(18f)); 
      label.setBackground(Color.cyan); 
      label.setOpaque(true); 

      add(label); 
      setBackground(Color.red); 
     } 
    } 
} 

:

enter image description here

는 여기에 내가 그 사진을 얻기 위해 사용되는 정확한 코드입니다. 나는 내 인생이 그 여분의 간격을 없앨 수는 없다. 어떤 도움이라도 좋을 것입니다.

답변

2
final JTabbedPane tabs = new JTabbedPane(); 
tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); // ADD THIS! 

다른 예는이처럼 동작하는 이유는해야, 창은 다음 줄 &에 탭이 우리가 많은 탭을 넘어 갔다 일단 자연스럽게 한 줄에 표시 하듯이 있다고 가정 랩이다 여분의 탭 줄을 포함하도록 기본 크기를 늘리십시오.

+0

감사합니다. – Smitty

+1

반갑습니다. 문제의 SSCCE 게시에 좋은 작업. 그걸 실행하고 문제를보고 내 솔루션을 테스트하는 것이 매우 쉬워졌습니다. :) –