2009-10-20 3 views
4

У меня есть 3 панели. Одна из них - основная панель, на которой расположены две небольшие панели.Установка размера панелей

Для главной панели, я использовал

setPreferredSize(new Dimension(350, 190)); 

Для меньшей левой панели, я использовал

setPreferredSize(new Dimension(100, 190)); 

Для меньшей правой панели, я использовал

setPreferredSize(new Dimension(250, 190)); 

но меньшие панели остаются того же размера. Как я могу это исправить? alt text

Это код, который у меня есть в моей основной панели.

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

public class Panel extends JPanel 
{ 

public Panel(Prison prison) 
{ 
    setup(); 
    build(prison); 
} 

private void setup() 
{ 
    setBorder(BorderFactory.createLineBorder(Color.blue)); 
    setLayout(new BorderLayout(1, 1)); 
    setPreferredSize(new Dimension(350, 190)); 
} 

private void build(Prison prison) 
{ 
    JTabbedPane tab = new JTabbedPane();  
    tab.addTab("Input", null, new InputPanel(), "Input"); 
    tab.addTab("Display", null, new DisplayPanel(), "Display"); 
    add(tab);    
} 
} 
+0

Вы игнорируете единственный соответствующий код, в котором сконструирован InputPanel. –

ответ

6

Не делайте этого.

Весь смысл менеджеров компоновки - это позволить динамическое изменение размера, которое необходимо не только для изменяемых пользователем окон, но и для изменения текстов (интернационализация) и разных размеров шрифта и шрифтов по умолчанию.

Если вы только use the layout managers correctly, они позаботятся о размерах панелей. Чтобы избежать растягивания ваших компонентов по всему экрану, когда пользователь увеличивает размер окна, у вас есть самая внешняя панель с выровненной слева FlowLayout и остальной частью пользовательского интерфейса в качестве ее одного дочернего элемента - это даст UI свой предпочтительный размер и любой излишек заполняется цветом фона.

1

Похоже, что вы используете GridLayout или, возможно, FlowLayout, и не являетесь тем, что хотите. Вероятно, вы захотите использовать BoxLayout, что соответствует его предпочтительным размерам.

final JPanel p = new JPanel(); 
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 
p.add(leftPanel); 
p.add(mainPanel); 
p.add(rightPanel); 
+0

Основная панель - та, которая содержит вкладки, а под вкладкой ввода находятся еще две панели. Для основной панели я использую BorderLayout, а для левой и правой панели я использую GridLayout. – Karen

+0

Вы не можете изменить размер ячеек в GridLayout (ячейки имеют одинаковое измерение) – jerjer

0

также - это предпочтительный размер. если вы не хотите изменять размер, вы также можете установить максимальные размеры.

Если вы в состоянии, вы можете проверить схему MIG, но BoxLayout также прост в использовании и в наборе инструментов Java уже есть.

-2

Именно этот.

buttonPanel = new JPanel(); 
buttonPanel.setSize(new Dimension(30, 100)); 

Не позволяйте менеджеру макета изменять размеры.