2015-10-20 3 views
0

Я пытаюсь создать JFrame и в котором я хочу, чтобы кнопка (Select the Device) была сверху, и текстовое сообщение (Active), которое находится в форме Label внизу , Я не могу этого сделать, и все они появляются в одной строке рядом друг с другом.Выравнивание JButton и JLabel на JFrame

JFrame f= new JFrame("AutoV"); 
    f.setVisible(true); 
    f.setSize(600,400); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel p=new JPanel(); 
    p.setBackground(Color.gray); 

    JButton b=new JButton("Select the Device"); 
    JLabel lab=new JLabel("Active"); 
    lab.setVerticalAlignment(SwingConstants.BOTTOM); 

    //p.add(b); 
    p.add(lab); 
    p.setBorder(BorderFactory.createLineBorder(Color.black)); 

    f.add(p); 
    Dimension dim1 = Toolkit.getDefaultToolkit().getScreenSize(); 
    f.setLocation(dim1.width/2-f.getSize().width/2, dim1.height/2-f.getSize().height/2); 
+3

1. JPanel имеет FlowLayout и 2. f.setVisible (истина); должна быть последняя строка кода, 3 – mKorbel

+0

Управление местоположением контролируется макетом, который вы использовали для холста? –

+0

@RomanC По умолчанию макет, как сказал @mKorbel, - 'FlowLayout', так как искатель ничего не задал. Кроме того, в Swing нет холста :) – user1803551

ответ

1

Вы должны найти различные макеты. Макет по умолчанию для многих компонентов - FlowLayout, ведь он выравнивает все элементы по горизонтали и как можно меньше. Настройка макета панелей в макете или сетке должна делать трюк.

https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

+0

Спасибо @LeFex. Цените это человек. – Arnav

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