2013-11-20 3 views
0
public class Test extends JFrame { 
    JPanel panel = new JPanel(); 
    JLabel label = new JLabel("g"); 
    JLabel label2 = new JLabel("w"); 

    public Test(){ 
     this.setVisible(true); 
     this.add(panel, BorderLayout.SOUTH)); 
     this.setSize(200,200); 
     panel.add(label, new FlowLayout(FlowLayout.RIGHT); 
     panel.add(label2, new FlowLayout(FlowLayout.LEFT); 
    } 
} 

Я думал, что это поместит ярлык справа от label2, но разве я не собираюсь это делать?Позиционирование JLabel на JPanel

ответ

0

Проблема в следующем panel.add(label, new FlowLayout(FlowLayout.RIGHT)); - это ложная конструкция, ваш JPanel по умолчанию имеет FlowLayout, и вы добавляете компоненты слева направо или справа налево по одному. Из-за этого добавить ярлыки, как в следующем:

panel.add(label2); 
panel.add(label); 

также:

вызов setVisible(true); в конце строительства JFrame.

Используйте pack() метод вместо setSize(200,200);

Читать учебник для LayoutManagers и FlowLayout.

+0

ОК, но если я хочу, чтобы JLabel быть дальше вправо, что это может быть, как я мог бы сделать это? –

+0

Вы можете использовать следующий [конструктор] (http://docs.oracle.com/javase/7/docs/api/java/awt/FlowLayout.html#FlowLayout (int,% 20int,% 20int)) для добавления пробелов в компоненты или другой LayoutManager, например ['GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html). – alex2410

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