Я хочу поместить Jbutton на конкретную координату в JFrame. Я поместил setBounds для JPanel (который я поместил в JFrame), и также setBounds для JButton. Однако они, кажется, не функционируют как ожидалось.
Мой вывод:
Это - мой код:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Control extends JFrame {
// JPanel
JPanel pnlButton = new JPanel();
// Buttons
JButton btnAddFlight = new JButton("Add Flight");
public Control() {
// FlightInfo setbounds
btnAddFlight.setBounds(60, 400, 220, 30);
// JPanel bounds
pnlButton.setBounds(800, 800, 200, 100);
// Adding to JFrame
pnlButton.add(btnAddFlight);
add(pnlButton);
// JFrame properties
setSize(400, 400);
setBackground(Color.BLACK);
setTitle("Air Traffic Control");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Control();
}
}
Как может поместить JButton
в координате (0, 0)?
Следующая строка должна быть вызвана перед добавлением компонента
pnlButton.setLayout(null);
Вышеуказанное установит панель содержимого для использования абсолютного расположения. Это означает, что вам всегда придется явно устанавливать границы вашего компонента с помощью метода setBounds
.
В общем, я бы не рекомендовал использовать абсолютное расположение.
Используйте child.setLocation (0, 0)
на кнопке и parent.setLayout (null)
. Вместо того, чтобы использовать setBounds (...) в JFrame для его размера, рассмотрите возможность использования только setSize (...)
и позволить ОС позиционировать фрейм.
//JPanel
JPanel pnlButton = new JPanel();
//Buttons
JButton btnAddFlight = new JButton("Add Flight");
public Control() {
//JFrame layout
this.setLayout(null);
//JPanel layout
pnlButton.setLayout(null);
//Adding to JFrame
pnlButton.add(btnAddFlight);
add(pnlButton);
// postioning
pnlButton.setLocation(0,0);