2016-07-13 10 views
0

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

И вот как это выглядит в настоящее время:

И код для этой части:

JTabbedPane tab = new JTabbedPane(); 
    tab.addTab("Items", items); 
    tab.addTab("Categories", categories); 
    setContentPane(tab); 
    //Also tried to create a JTabbedPane class and see if i could remove the labels and manually add two buttons to the top but without success. 

Я хочу язычки, чтобы использовать как можно больше места, без фактического сокращения содержимого панелей. Так может ли кто-нибудь сказать мне, как настроить JTabbedPane, внешний вид и канал или только сами вкладки, чтобы это сделать.

ответ

2

Самый простой подход, вероятно, чтобы создать свой собственный компонент:

  1. Создать «основной» панель, которая использует BorderLayout.
  2. Создайте панель, которая использует GridLayout и добавит ваши кнопки на эту панель. Затем добавьте эту панель на «главную» панель, используя BorderLayout.PAGE_START. Каждая кнопка будет отображать конкретную панель при нажатии.
  3. Создайте вторую панель, которая использует CardLayout. Добавьте эту панель в «главную» панель, используя BorderLayout.CENTER. Каждая из этих панелей будет представлять вкладку.

Другой вариант - посмотреть на TabbedPaneUI и найти способ, который рисует каждую вкладку и модифицирует код для вашего требования.

+0

Это то, что у меня было в начале, две кнопки и две панели, но код не выглядел очень красивым, поэтому я попытался его укоротить. Хотя это решение кажется лучше. –

+0

Почему GridLayout, а не только BoxLayout на X_AXIS? –

+0

Он работал нормально, хотя мне пришлось добавить новый параметр, чтобы сохранить заголовок кнопки, поскольку, когда я вызывал супер (текст); для нового класса кнопок размер кнопки изменится. –