2015-06-29 3 views
-1

Border Layout не работает для меня ... Я использовал учебник и скопировал то, что они сделали, когда я запустил его в своем коде, он не работает. Если вы могли бы указать мою ошибку и объяснить, почему это ошибка, которая была бы очень благодарна! :) Мой код выглядит следующим образом:Java BorderLayout не работает

public static JButton bb = new JButton("Continue"); 
public TextArea ta = new TextArea(30,140); 
TextArea tb = new TextArea(3,140); 
public int counter = 0; 

//main class 
public static void main(String[]args){  
    Frame f = new Frame("---Quest---"); 
    base ex = new base(); 
    ex.init(); 
    f.setResizable(false); 
    f.add("Center", ex); 
    f.pack(); 
    f.show(true); 
    f.setSize(1100,800); 
} 
public void init() {   
    bb.addActionListener(this); 
    Panel p; 
    setLayout(new BorderLayout()); 
    p = new Panel(); 

    p.add(ta,BorderLayout.NORTH); 
    p.add(tb, BorderLayout.CENTER); 
    p.add(bb, BorderLayout.SOUTH); 
    tb.setLocation(0,50); 
    p.setBackground(Color.blue); 
    ta.setBackground(Color.cyan); 
    ta.setEditable(false); 
    add("Center", p); 
}    
+1

Пожалуйста 1) полностью определить, что вы имеете в виду под «не работает». Что вы ожидаете увидеть? Что вы на самом деле видите? 2) Пожалуйста, попробуйте отформатировать код, чтобы он соответствовал стандартам и более понятен нам. Отступ кодовых блоков - это не то, что вам нужно делать случайным образом, а скорее должно быть 4 пробела для каждого блока и не должно меняться. –

+0

Также это; '@SuppressWarnings (" deprecation ")' - аннотация, которая никогда не должна использоваться. –

+1

'f.add (« Center », ex);' может быть лучше использовать 'f.add (ex, BorderLayout.CENTER)'. Я мог бы также лучше не использовать API, который был заменен более 15 лет назад ... просто сказал ... – MadProgrammer

ответ

2
setLayout(new BorderLayout()); 
p = new Panel(); 

p.add(ta,BorderLayout.NORTH); 
p.add(tb, BorderLayout.CENTER); 
p.add(bb, BorderLayout.SOUTH); 

Вызов setLayout на другой контейнер не изменит менеджера компоновки для других контейнеров, что будет раздражать.

Panel по умолчанию использует FlowLayout. Вместо этого попробуйте использовать p = new Panel(new BorderLayout())

Я бы также поощрять использование add(p, BorderLayout.CENTER); над add("Center", p);, есть меньше, что может пойти не так (опечатками center, например)

Попробовать и избежать смешивания AWT и Swing-компонентов, они не делают играйте хорошо вместе, вместо этого выберите API и придерживайтесь его. В качестве общей рекомендации мы предложим хотя бы Swing, если не JavaFX, так как у них есть лучшая поддержка сообщества, чем AWT.

Посмотрите Creating a GUI With JFC/Swing и Laying Out Components Within a Container для получения более подробной информации

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