2015-07-16 2 views
1

Я создаю свою IDE с помощью JTabbedPane. Поскольку я добавляю вкладки в свой JTabbedPane, некоторые заголовки длиннее, а некоторые - короче. Это приводит к довольно уродливой длине названия с некоторыми действительно длинными заголовками.Изменение размера для заголовка JTabbedPane

Пример, в котором я добавить Pane к моему JTabbedPane:

codes.addTab("", icon, scroll.get(scroll.size() - 1)); 

В результате этого выхода, когда я запустить программу:

enter image description here

Как вы можете видеть, больше под названием вкладки делают вкладку заголовка довольно длинной и уродливой. И когда я добавить слишком много вкладок, это происходит:

enter image description here

Вопрос: Могу ли я в состоянии исправить или масштабировать размер заголовка, как, возможно, ограничить длину заголовка является его слишком долго? Также может быть стрелка влево в слишком большом количестве файлов? Так же, как это:

enter image description here

ответ

1

Если вы хотите установить размер вкладки, это будет немного сложнее, потому что каким-то образом вы должны переопределить поведение по умолчанию семейства методов JTabbedPane paint() и используемого вами LookAndFeel. Я хочу сказать, что это не то, что некрасиво вы думаете, потому что Manu Иды, такие как Eclipse, или Intellij также имеют различные размеры вкладки длины для исходных файлов:

Eclipse:

enter image description here

Так что не беспокойство о размере.

Но о размещении вкладок, вы должны использовать следующий метод, чтобы изменить макет закладкиРазмещения в:

tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); 

Вы можете добавить некоторые SplitPanes вам только что вылупившиеся IDE, чтобы сделать режим профессионального это. Попробуйте следующий фрагмент:

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.Toolkit; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JSplitPane; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextArea; 
import javax.swing.JToolBar; 
import javax.swing.UIManager; 

public class MainWindow extends JFrame { 
    private static final int FRAME_WIDTH = 1024; 
    private static final int FRAME_HEIGHT = 600; 

    public MainWindow() { 
     Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
     setBounds(dim.width/2-FRAME_WIDTH/2, dim.height/2-FRAME_HEIGHT/2, FRAME_WIDTH, FRAME_HEIGHT); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     // 
     this.setLayout(new BorderLayout(4, 4)); 
     // 
     JToolBar toolBar = new JToolBar(); 
     toolBar.add(new JButton("Test")); 
     toolBar.add(new JButton("Test")); 
     toolBar.add(new JButton("Test")); 
     toolBar.add(new JButton("Test")); 
     JPanel northPanel = new JPanel(); 
     northPanel.add(toolBar); 
     // 
     JPanel southPanel = new JPanel(); 
     JLabel statusLabel = new JLabel("Test Status..."); 
     southPanel.add(statusLabel); 
     // 
     this.add(northPanel, BorderLayout.NORTH); 
     this.add(southPanel, BorderLayout.SOUTH); 
     // 
     JPanel westPanel = new JPanel(new BorderLayout()); 
     JPanel eastPanel = new JPanel(new BorderLayout()); 
     JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
     splitPane.setLeftComponent(eastPanel); 
     splitPane.setRightComponent(westPanel); 
     splitPane.setDividerLocation(250); 
     splitPane.setContinuousLayout(true); 
     this.add(splitPane, BorderLayout.CENTER); 
     // 
     JTabbedPane tabbedPane = new JTabbedPane(); 
     tabbedPane.addTab("MyNewIdeTabbedPaneTest.java", new JTextArea()); 
     tabbedPane.addTab("MyFrame.java", new JTextArea()); 
     tabbedPane.addTab("JButton.java", new JTextArea()); 
     tabbedPane.addTab("Main.java", new JTextArea()); 
     tabbedPane.addTab("MyNewIdeTabbedPaneTest.java", new JTextArea()); 
     tabbedPane.addTab("MyFrame.java", new JTextArea()); 
     tabbedPane.addTab("JButton.java", new JTextArea()); 
     tabbedPane.addTab("Main.java", new JTextArea()); 
     tabbedPane.addTab("MyNewIdeTabbedPaneTest.java", new JTextArea()); 
     tabbedPane.addTab("MyFrame.java", new JTextArea()); 
     tabbedPane.addTab("JButton.java", new JTextArea()); 
     tabbedPane.addTab("Main.java", new JTextArea()); 
     tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); 
     tabbedPane.setAutoscrolls(false); 
     //tabbedPane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT); Also try this in comparison with above line 
     westPanel.add(tabbedPane, BorderLayout.CENTER); 
    } 

    public static void main(String[] args) { 
     try { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     MainWindow mw = new MainWindow(); 
     mw.setVisible(true); 
    } 
} 

Удачи.

+0

Благодаря горизонтальной компоновке вкладок прекрасно работает – user3188291

0

вы можете выровнять заголовок слева, как это:

JLabel tabLabel = new JLabel("Tab", JLabel.LEFT); 
//add new label at set location 
jTabbedPane.setTabComponentAt(0, tabLabel); 

Если вы хотите получить больше информации, проверьте this link ответ очень завершена.

Надежда я помогает вам

EDIT: Вы также можете ограничить длину вашего титула что это другая возможность

Вы можете также следовать этому tutorial сделанное Oracle это довольно просто

Смежные вопросы