Игнорируемые установки

Я просто хотел бы разместить свой JButton методом setBounds. Но какими бы ни были параметры этого метода, кнопка находится посередине вверху.

Это мой код:

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

class Panneau_fenetre1A extends JPanel                      
{ 
    JButton boutonOK = new JButton ("OK");


    public Panneau_fenetre1A(int Na)
    {
        boutonOK.setBounds(300,300,30,30);
        add(boutonOK);

    }

}

3 ответа

Решение

Расположение кнопки также будет зависеть от макета, который вы используете в данный момент. Вот Vusual Guide to Layout, чтобы помочь вам выбрать лучший макет для ваших требований.

С setLayout(null), оно работает!

Вы расширяете JPanel, поэтому используется конструктор JPanel по умолчанию, а LayoutManager по умолчанию, по любой причине, FlowLayout! Так что если вы действительно хотите использовать NullLayout, вы можете добавить это в свой класс:

  public Panneau_fenetre1A()
  {
    super(null);
  }

Но серьезно подумайте о других менеджерах макетов, например, BorderLayoutManager (super(new BorderLayout())) - хорошее начало.

При разработке вашего диалога помните, что вы можете и должны вкладывать свои макеты: один JPanel в другой JPanel (например, GridLayout внутри BorderLayout). Обратите внимание: "хороший" диалог должен изменить размер должным образом, так что если пользователь изменяет размер вашего фрейма, вы хотите автоматически расширять ваши информационные объекты, такие как таблица, и не показывать большие области фона JPanel. Это то, чего вы не можете достичь с помощью NullLayout.

Другие вопросы по тегам