У мене є JTabbedPane з макетом кордону.
Ось код, який я використовую, щоб додати компоненти:
add(columnNames, BorderLayout.NORTH);
add(scroll, BorderLayout.CENTER);
add(useCtrl, BorderLayout.SOUTH);
setVisible(true);
Питання: Помітьте зайвий пробіл праворучвсередині JScrollPane. Я цього не хочу. Я хотів би, щоб JScrollPane взагалі не змінював розмір при зміні розміру JFrame. Я спробував setSize () і setPreferredSize (), але розмір JScrollPane завжди змінюється. I " я намагався використовувати GridLayout, але я отримую той же результат.
Відповіді:
4 для відповіді № 1Помістіть JScrollPane
в JPanel
з іншим макетом. (напр. BoxLayout
або GridBagLayout
). І додайте JPanel
до центру.
3 для відповіді № 2
Розмір графічного об'єкта контролюється диспетчером макетів. The BorderLayout
завжди буде розширювати CENTER
об'єкт, щоб зайняти весь наявний простір. GridLayout
пропорційно розширює всі діти. Якщо ви спробуйте GridBagLayout і встановіть weightx
до 0, що запобігає розширенню по горизонталі.
Є багато менеджерів макетів,перегляньте API, щоб отримати більше варіантів та експериментуйте, поки не знайдете потрібну вам поведінку. Кожен має досить гарне пояснення того, як це працює в javadoc.