Как поместить JButton в желаемом местоположении в JFrame использование Java

Я хочу поместить Jbutton на конкретную координату в JFrame. Я поместил setBounds для JPanel (который я поместил в JFrame), и также setBounds для JButton. Однако они, кажется, не функционируют как ожидалось.

Мой вывод:

alt text

Это - мой код:

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)?

20
задан Glorfindel 1 August 2019 в 07:10
поделиться

2 ответа

Следующая строка должна быть вызвана перед добавлением компонента

pnlButton.setLayout(null);

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

В общем, я бы не рекомендовал использовать абсолютное расположение.

23
ответ дан 30 November 2019 в 00:31
поделиться

Используйте 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);
4
ответ дан 30 November 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: