2016-10-28 2 views
0

Я выполнял задание для своего класса Java II, и я хотел поместить кнопку под ярлыками в JFrame. Я пробовал:Можно ли применить FlowLayout к JButton в JFrame?

button.setLayout(new FlowLayout()); 

, а также:

FlowLayout flow = new FlowLayout(FlowLayout.CENTER); 
    button.setLayout(flow); 

и ни повлияло на положение кнопки. Позиционирование кнопки не требовалось для задания, поэтому, возможно, я просто усложняю вещи для себя, я просто подумал, что это будет выглядеть лучше.

+1

Компонент, к которому добавляется кнопка должна иметь 'FlowLayout' (который является расположение по умолчанию для' 'JPanel' так или иначе), применяя' FlowLayout' к кнопке будет только влиять на макет компоненты, которые добавляются к кнопке. –

+2

Предлагаю прочитать [this] (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html). – mre

+1

, если вы пытаетесь поместить кнопку, вы не должны редактировать макет кнопки. диспетчер компоновки родителя кнопки (в данном случае фрейм) будет контролировать расположение кнопки. – nhouser9

ответ

0

Вы должны создать JPanel, затем установить макет в JPanel, а затем добавить нужные вам кнопки на эту панель, а затем добавить JPanel в JFrame, чтобы вы могли изменить расположение кнопок, что повлияло на остальную часть компоненты.

public class ControlPanel extends JPanel { 

private JButton stop_jb; 
private JButton start_jb;  

public ControlPanel() { 
    initComponents(); 
} 

private void initComponents() { 

    //this.setLayout(new GridLayout(0, 2)); 
    this.setLayout(new FlowLayout()); 

    stop_jb = new JButton("Stop"); 
    stop_jb .setVisible(true); 
    stop_jb .setActionCommand("stop"); 
    this.add(stop_jb); 

    start_jb = new JButton("Start");   
    start_jb .setVisible(true); 
    start_jb .setActionCommand("Start"); 
    this.add(start_jb); 
Смежные вопросы